因此,在以下情况下,我目前无法解决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”,同时考虑到实例可能以任何顺序发生
答案 0 :(得分:1)
您可以使用
NOTES="#P\d+\s+@(?:[A-Z]{2},)*MT\b
它匹配
NOTES=#P
-一个NOTES=#P
子字符串\d+
-1个以上数字\s+
-超过1个空格@
-一个@
字符(?:[A-Z]{2},)*
-零个或多个2个大写ASCII字母序列,后跟一个逗号MT\b
-整个单词MT
(\b
是单词边界)。