是否可以将“aba”中的“ab”,“ba”和“ba”与单个正则表达式匹配?

时间:2016-02-19 03:21:39

标签: regex

我的文字如下: XXX ab YYY XXX ba ab YYY XXX aba YYY 什么是匹配“ab”,“ba”和“ba”的单一正则表达式?我试过了

/(?=a)(ba)|ab|ba/ig

但它在第三行匹配ab。在这里,我希望“ba”超过“ab”。

我可以通过多个正则表达式获得预期的结果。我正在寻找一个单一的正则表达式解决方案。

有什么建议吗?

谢谢!

4 个答案:

答案 0 :(得分:1)

满足您的示例的最快方法是匹配每个单词中ab的最后两个实例:

/[ab]{2}\b/

由于您的问题意图似乎涉及匹配abba以外的模式,因此此解决方案可能更具推广性:

/ab(?!a)|ba/

答案 1 :(得分:1)

如果你想在那个文字文本中使用这些文字字符:/(ba)|^ab/g - 请看它在这里工作@ regular expression 101

答案 2 :(得分:1)

这必须有效(ba)|^ab。你可以在这里查看逻辑http://regexr.com/

答案 3 :(得分:1)

此正则表达式适用于您的问题。

re.findall('(\S*ab\S.*) (ab\S*) (ba\S*)', fileName) 

第一个paranthesis将帮助你提取字符串匹配ab并后跟一个单词,例如abort。接下来的两个问题将帮助您获得所需的答案。 ab,ba all in single regex。