我对正则表达式完全陌生,即使是一个简单的案例我也很挣扎。
我想确定以下情况,例如:
IR!GBP!INDEX.GBP
IR!GBP!INDEX.USD
其中子字符串
GBP
(或 USD
)在较大字符串中恰好出现两次。第二次,它只能出现在 INDEX.
子字符串之后。我如何通过正则表达式检测它?
大字符串的形成如下:第一位始终是“IR”,第二位是货币,第三位是另一个字符串,所有这些都用感叹号分隔。
例如,
IR!GBP!COUNTERPARTY.USD
或IR!USD!INDEX.GBP
不应返回匹配项。
我希望我的问题很清楚,提前非常感谢您的帮助!
我尝试了
[a-zA-Z]
和 +?
的各种组合,但最终没有结果。我承认我的无能!
对我来说,以下内容似乎符合您的要求:
^IR!([A-Z]+)![A-Z]+\.\1$
查看在线演示。该图案的含义是:
^IR!
- 匹配字符串开头,后跟大写“IR”和感叹号;([A-Z]+)
- 第一个捕获组,用于保存 1+ 个大写字符(您的货币)的内容;![A-Z]+\.
- 字面上的“!”在 1+ 个大写字符和一个文字(转义)点之前;\1
- 匹配第一组中捕获的内容;$
- 端线锚点。