正则表达式-有没有办法以任何顺序找到子字符串?

时间:2019-04-04 09:51:59

标签: regex string substring

因此,在以下情况下,我目前无法解决Regex问题:

情况1(仅说明只有一个国家受到影响): (...)@ MT(...)

情况2(显​​示多个受影响的国家): (...)@ MT,GR,DE,FR(...) 没有任何定义的顺序,因此可能类似于上面的或(...)“ @ GR,MT,FR,DE”(...)等

我为情况1达成的目标很简单,但其余的我却一无所知...

这是我已经尝试实现的目标

它得到情况1和情况2的“一半”(仅第二次出现)

^.*NOTES="#P\d\s\@(?<affected_MT>(MT|\,MT|(?>\,[A-Z]{2})*\,MT)).*$

我的目标是在字符串中找到实例“ MT”,同时考虑到实例可能以任何顺序发生

1 个答案:

答案 0 :(得分:1)

您可以使用

NOTES="#P\d+\s+@(?:[A-Z]{2},)*MT\b

请参见regex demoRegulex graph

它匹配

  • NOTES=#P-一个NOTES=#P子字符串
  • \d+-1个以上数字
  • \s+-超过1个空格
  • @-一个@字符
  • (?:[A-Z]{2},)*-零个或多个2个大写ASCII字母序列,后跟一个逗号
  • MT\b-整个单词MT\b是单词边界)。

enter image description here