2017-01-10 26 views
1

我在構建c#中的正則表達式時遇到了一些麻煩。查找以另一個字符串開頭的字符串中的所有命名組發生

例如,我有一堆字符串:

1: TestString.WrittenEspecially.ForStackOverflowStringTest 
2: TestString.WrittenEspecially.ForStackOverflowString 
3: TestString.WrittenEspecially.StringForStackOverflowStringTest 
4: TestString.WrittenStringEspecially.ForStackOverflowStringTest 

我想找到的單詞「字符串」所有出現在開頭爲「1」或「3」。

我有一個正則表達式:^(1:|3:).*(?<str>String)+.*

但它發現只有一個名爲組的最後出現。

任何想法?

回答

6

如果你需要使用正則表達式,它是很容易與.NET的正則表達式支持的可變寬度的回顧後:

(?m)(?<=^[13]:.*?)String 

regex demo

詳細

  • (?m) - 啓用多行模式,以便^可以匹配的開頭INE而不是字符串
  • (?<=^[13]:.*?) - 正回顧後立即需要以下模式到當前位置的左邊:
    • ^ - 一行的開始
    • [13]: - 13然後:
    • .*? - 除換行符以外的任何0+字符,儘可能少
  • String - 文字字符序列。
相關問題