正则表达式在字符串中查找匹配项

时间:2017-06-30 07:43:56

标签: regex

我有一个示例字符串:

Ole Abraham  of XYZ becomes Chief Digital Officer and EVP, Business Development of Warner Music Group.

我想要最后一次出现of.的所有单词。 需要的结果:of Warner Music Group.

我使用了RegEx:(\bof\b).+\.\s? 这是从of的第一次出现返回子字符串:

of XYZ becomes Chief Digital Officer and EVP, Business Development of Warner Music Group. 

1 个答案:

答案 0 :(得分:1)

正则表达式引擎从左到右处理字符串,因此,您的模式匹配的of是左起第一个。然后,.+将整行与其末尾匹配,并且仅回溯以查找.\s?并不重要,因为它可以匹配空字符串,但如果找到则会匹配在.之后,因为?是一个贪婪的量词。)

您可以使用

.*\bof\s+([^.]+)

请参阅regex demo。结果将在第1组中。请注意,如果您必须在字符串中测试.存在,请将\.附加到模式的末尾。

<强>详情

  • .* - 将尽可能多地匹配换行符以外的任何0 +字符,直到后续子模式的最后一次出现
  • \bof - 整个字of
  • \s+ - 一个或多个空格
  • ([^.]+) - .以外的一个或多个字符。