我可以使用哪个正则表达式来查找较长字符串中的两个子字符串?

问题描述 投票:0回答:1

我对正则表达式完全陌生,即使是一个简单的案例我也很挣扎。

我想确定以下情况,例如:

IR!GBP!INDEX.GBP

IR!GBP!INDEX.USD

其中子字符串

GBP
(或
USD
)在较大字符串中恰好出现两次。第二次,它只能出现在
INDEX.
子字符串之后。我如何通过正则表达式检测它?

大字符串的形成如下:第一位始终是“IR”,第二位是货币,第三位是另一个字符串,所有这些都用感叹号分隔。

例如,

IR!GBP!COUNTERPARTY.USD
IR!USD!INDEX.GBP
不应返回匹配项。

我希望我的问题很清楚,提前非常感谢您的帮助!

我尝试了

[a-zA-Z]
+?
的各种组合,但最终没有结果。我承认我的无能!

regex substring
1个回答
0
投票

对我来说,以下内容似乎符合您的要求:

^IR!([A-Z]+)![A-Z]+\.\1$

查看在线演示。该图案的含义是:

  • ^IR!
    - 匹配字符串开头,后跟大写“IR”和感叹号;
  • ([A-Z]+)
    - 第一个捕获组,用于保存 1+ 个大写字符(您的货币)的内容;
  • ![A-Z]+\.
    - 字面上的“!”在 1+ 个大写字符和一个文字(转义)点之前;
  • \1
    - 匹配第一组中捕获的内容;
  • $
    - 端线锚点。
© www.soinside.com 2019 - 2024. All rights reserved.