让我说我有以下字符串: “blablaoneblablablaone” 我希望在“一......一”中匹配“bla”匹配, 这意味着前两个“bla”不会被捕获,因为它们来自“one”之前。
使用正则表达式很容易完成两次(一次匹配“one ... one”和一次匹配“bla”之间的所有内容),但我的问题是关于是否可以使用单个正则表达式完成。< / p>
谢谢
答案 0 :(得分:0)
你可以使用环视。
(?<=one)(bla)*(?=one)
正面观察((?<=...)
)会检查前面的字符是否与某种模式匹配。
正向前瞻((?=...)
)会检查下一个字符是否符合某种模式。
匹配字符串中不包括环视。
或者您可以简单地将要提取的部分放在括号中并提取组1.(?:
是使(bla)成为非捕获组,它不会更改匹配,只是得到了。)
one((?:bla)*)one
答案 1 :(得分:0)
您可以使用以下正则表达式:/(?:one)([bla]+)(?:one)/g
。它可以在这里测试:http://www.gethifi.com/tools/regex