我在c#中构建正则表达式时遇到了一些麻烦.
例如,我有一堆字符串:
1: TestString.WrittenEspecially.ForStackOverflowStringTest 2: TestString.WrittenEspecially.ForStackOverflowString 3: TestString.WrittenEspecially.StringForStackOverflowStringTest 4: TestString.WrittenStringEspecially.ForStackOverflowStringTest
我想在以"1:"或"3:"开头的行中找到所有出现的单词"String".
我有一个正则表达式: ^(1:|3:).*(?
但它只找到最后一次出现的命名组.
有任何想法吗?
如果你需要使用正则表达式,那么.NET正则表达式支持的可变宽度lookbehind非常容易:
(?m)(?<=^[13]:.*?)String
请参阅正则表达式演示
细节:
(?m)
-实现了多模式,以便^
能匹配的起始线,而不是字符串
(?<=^[13]:.*?)
- 在当前位置的左侧立即需要以下模式的正向外观:
^
- 开始一条线
[13]:
- 1
或者3
然后:
.*?
- 除换行之外的任何0 +字符,尽可能少
String
- 文字字符序列.