如何使用正则表达式在一个句子中找到一个单词



我有这样的示例数据:

Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Re: Krishna P Mohan (31231231 / NA0031212301)
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,

这是我所期望和目前得到的:

预期op - Krishna p Mohan

输出- Krishna p Mohan (31231231/NA0031212301)

我需要找到在Re:之后的名称,直到(。我得到了完整的行,而不是只有名字,直到括号开始。

代码
var regex = new Regex(@"[nr].*Re:s*([^nr]*)");
var fullNameText = regex.Match(extractedDocContent).Value;

如果您只想要一个匹配,您可以使用后面的断言:

(?<=bRe:s*)[^s()]+(?:[^nr()]*[^s()])?

  • (?<=bRe:s*)正向后看,断言单词Re:后面跟着可选的空白字符
  • [^s()]+匹配除()以外的1个或多个非空白字符
  • (?:非捕获组
    • [^nr()]*可选地重复匹配除换行符和()以外的任何字符
    • [^s()]匹配除()以外的非空白字符
  • )?关闭非捕获组

如果您想要捕获组值,并且您只匹配单词字符:

bRe:s*([^nr(]+)b

Regex演示

否则可以使用:

bRe:s*([^s()]+(?:[^nr()]*[^s()])?)

最新更新