gpt4 book ai didi

c# - 正则表达式解析两个标记之间的字符串,没有捕获组并排除标记

转载 作者:太空宇宙 更新时间:2023-11-03 22:35:25 26 4
gpt4 key购买 nike

这样的字符串集合:

string s1 = "   Identifier1 = Value1                      ## Comment";
string s2 = " Something = SomeData";
string s3 = " Name = information\\t\\t\\t## More comments!";
string s4 = " Nam2 = information";

我需要一个正则表达式模式,它可以获取行中等号 (=) 之后到行尾或 ## 注释标记的所有信息,但不捕获其中任何一个。

给我(分别):

" Value1                      "
" SomeData"
" information\\t\\t\\t"
" information"

到目前为止我已经想到了这个:(?<=[=]).+(?=(?>##|$))

它有点工作,因为它设法抓取 = 符号之后的所有文本,直到字符串的末尾,但是当有注释标记时它永远不会工作:## 因为它仍然抓取直到字符串的末尾,而不是停在 ## 处。

...如果我将模式更改为:(?<=[=]).+(?=##))

然后它在带有注释标记的行上工作(并根据需要在它们之前停止)。

那么我做错了什么/错过了什么让它在 ## 之前或 EOL 结束捕获?此外,我不能使用显式或隐式捕获组,因为这些模式被传递到解析器中,解析器在处理它们时将它们转换为非捕获组。

直到最近几天我才使用前瞻/后视模式,这些东西让我伤透了脑筋......

最佳答案

您可以使用此正则表达式(如使用 here 所示):

(?<==)(?:(?!#{2}).)*
  • (?<==)回顾确保匹配之前的内容 =从字面上看
  • (?:(?!#{2}).)*匹配任何字符(不包括换行符)任意次数,直到达到 ##

关于c# - 正则表达式解析两个标记之间的字符串,没有捕获组并排除标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55502484/

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