再次捕获一个单词`+`相同的单词但带有前缀
Capture a word `+` same word again but with a prefix
致所有正则表达式大师
知道如何对付这只野兽
string = 'Position_Name [+|-|/|*] PrevYear Position_Name'
寻找正则表达式来匹配 Position_Name
的出现(基本上是重复的两倍)但不是真正的骗局,因为它后面跟着一个特殊字符,然后是它自己但是有一些前缀 - 这里:'PrevYear'。表示 Position_Name
是动态的,可以是任何单词(例如 Profit
、Sales
等),但 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
- 单词边界。
致所有正则表达式大师
知道如何对付这只野兽
string = 'Position_Name [+|-|/|*] PrevYear Position_Name'
寻找正则表达式来匹配 Position_Name
的出现(基本上是重复的两倍)但不是真正的骗局,因为它后面跟着一个特殊字符,然后是它自己但是有一些前缀 - 这里:'PrevYear'。表示 Position_Name
是动态的,可以是任何单词(例如 Profit
、Sales
等),但 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
- 单词边界。