再次捕获一个单词`+`相同的单词但带有前缀

Capture a word `+` same word again but with a prefix

致所有正则表达式大师

知道如何对付这只野兽

string = 'Position_Name [+|-|/|*] PrevYear Position_Name'

寻找正则表达式来匹配 Position_Name 的出现(基本上是重复的两倍)但不是真正的骗局,因为它后面跟着一个特殊字符,然后是它自己但是有一些前缀 - 这里:'PrevYear'。表示 Position_Name 是动态的,可以是任何单词(例如 ProfitSales 等),但 PrevYear 将保持不变。

那么我如何识别这些行,其中有一个位置被提及两次,中间有一些数学符号(现在),然后捕获这三个元素,因为加号也可以是 /(分开by), 减号 - 或乘法 * 在我的示例中由 [+|-|/|*] 表示。

PS:我不介意分两步进行编程...所以首先匹配然后捕获 - 但仍然需要正则表达式来找到这些小宝石(数百行)。

优雅地找到骗子不是问题,例如通过 \b(\w+) \b 但我已经意识到我的能力不足以完成那个组合。

感谢提示和支持。

您可以使用

\b(\w+)\b\s*[-+/*]\s*PrevYear\s*\b

regex demo详情

  • \b - 单词边界
  • (\w+) - 第 1 组:一个或多个单词字符
  • \b - 单词边界
  • \s*[-+/*]\s* - -+/* 包含零个或多个空格
  • PrevYear - 固定字
  • \s* - 零个或多个空格
  • </code> - 与第 1 组 </li> 中捕获的值相同 <li><code>\b - 单词边界。