c# - 在以另一个开头的字符串中查找所有命名组的出现

标签 c# regex

我在用 C# 构建正则表达式时遇到了一些麻烦。

比如我有一堆字符串:

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

我想在以“1:”或“3:”开头的行中找到所有出现的单词“String”。

我有一个正则表达式:^(1:|3:).*(?<str>String)+.*

但它只找到命名组的最后一次出现。

有什么想法吗?

最佳答案

如果您需要使用正则表达式,使用 .NET 正则表达式支持的可变宽度后视非常容易:

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

参见 regex demo

详细信息:

  • (?m) - 启用多行模式以便 ^可以匹配的开头而不是字符串
  • (?<=^[13]:.*?) - 正向后视需要紧靠当前位置左侧的以下模​​式:
    • ^ - 行首
    • [13]: - 13然后 :
    • .*? - 除换行符外的任何 0+ 个字符,尽可能少
  • String - 文字字符序列。

关于c# - 在以另一个开头的字符串中查找所有命名组的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41564372/

相关文章:

c# - 如何在 ASP.net 中使用 gridview 单击一次按钮更新多行?

c# - 在哪里存储正则表达式?

javascript - 正则表达式在 IE8 中不起作用

java - ANTLR:循环与字符 '%' 处的任何内容都不匹配

C 正则表达式,regcomp

php - 正则表达式强制字母数字但允许撇号和连字符?

c# - 单一职责原则是否与类的依赖关系直接相关?

c# - 在类名中使用下划线

c# - 以字符串形式获取属性名称

regex - Pylint 忽略模式不起作用