我们应该只将正则表达式添加到脚本而不触及任何其他内容。制作脚本使其接受3个捕获组,并且有2个不同的正则表达式依赖于输出。我为这两种情况准备了epxressions,但是当我这样做时:
([a-zA-Z0-9]+[ ]?)\(P[: ]?([a-zA-Z0-9 ]*)()
该脚本认为有6个捕获组(每个表达式包含3个捕获组),因此给出了一个错误。
如果没有脚本认为有6个捕获组,我应该如何加入2个表达式,因为这两个表达式永远不能应用,它们可以是expression1或expression2,但不能同时使用两者。
表达式1是:
()()\)[ ]+([a-zA-Z0-9]+$|[a-zA-Z0-9]+[ ])
表达式2是:
{{1}}
感谢您的任何建议!
答案 0 :(得分:0)
你有两个正常的替代品,很少有坏处:
第一次正常。通过代码分开:
geo_mean
第二个正常。使用所有6个口袋。
if (expression1) {
DO SOMETHING
} else if (expression2) {
DO SOMETHING
} else {
NO MATCH FOR BOTH
}
对于糟糕的解决方案,你可以使用非常复杂的正则表达式,这可能会有一些隐藏的错误,这种表现很难维护,可能根本不可能。
答案 1 :(得分:-1)
(?:([a-zA-Z0-9]+[ ]?)\(P[: ]?([a-zA-Z0-9 ]*)|\)[ ]+([a-zA-Z0-9]+$|[a-zA-Z0-9]+[ ]))
最后一组([a-zA-Z0-9]+$|[a-zA-Z0-9]+[ ])
也可以缩短
([a-zA-Z0-9]+(?:$|[ ]))
可以使用非捕获组(?:
.. )
代替(
.. )
,以便在不添加新组的情况下对模式进行分组。
没有关于expression1和expression2的更多信息,如果模式具有以下形式,则难以回答:
exp1: (g11)s11(g21)s21(g31)
exp2: (g12)s12(g22)s22(g32)
组合表达式可以是
(?=(?:g11)s11(?:g21)s21(?:g31)|(?:g12)s12(?:g22)s22(?:g32))((?:g11|g12))(?:s11|s12)((?:g21|g22))(?:s21|s22)((?:g31|g32))
但可能会根据需要进行简化。