gpt4 book ai didi

c# - 正则表达式,匹配任何未包含在

转载 作者:行者123 更新时间:2023-12-05 07:47:58 24 4
gpt4 key购买 nike

给定字符串 foobarbarbarfoobar,我想拥有 foo 之间的所有内容。所以我为此使用了这个表达式,结果是:barbarbar。它工作得很好。

(?<=foo).*(?=foo)

现在我也想要相反的东西。所以给定字符串 foobarbarbarfoobar 我想要所有没有被 foo 包围的东西。我尝试了以下正则表达式:

(?<!foo).*(?!foo)

我期望 bar 作为结果,但它返回了 foobarbarbarfoobar 的匹配项。这对我来说没有意义。我错过了什么?

解释来自:https://regex101.com/我觉得不错?

(?<!foo).*(?!foo)
(?<!foo) Negative Lookbehind - Assert that it is impossible to match the regex below
foo matches the characters foo literally (case sensitive)
.* matches any character (except newline)
Quantifier: * Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
(?!foo) Negative Lookahead - Assert that it is impossible to match the regex below
foo matches the characters foo literally (case sensitive)

非常感谢任何帮助

最佳答案

我希望有人能找到更好的方法,但这种可憎的做法可能会如你所愿: (.*)foo(?<=foo).*(?=foo)foo(.*)

第一个 foo 之前的文本在捕获组 1 中(对于您提供的示例,这将是空的)并且之后的文本在捕获组 2 中(在这种情况下为“bar”)

如果你想在两端都包含'foo',请改用:(.*)(?<=foo).*(?=foo)(.*) .这将在第 1 组中产生“foo”,在第 2 组中产生“foobar”。

关于c# - 正则表达式,匹配任何未包含在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39111944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com