在正则表达式中找不到正向前向(?= pattern)示例的匹配项

问题描述 投票:0回答:2

[当我在正则表达式中学习断言时,我的朋友给了我一个模式/one(?=two)three/请我找到与之匹配的有效字符串。但是,似乎不可能找到这样的字符串。 “ onetwothree”无效。我尝试解释一下,(?=xxx)没有实际字符,因此该模式不匹配。但这仍然令人困惑。希望有人可以对其进行彻底验证。 :-)

javascript regex regex-lookarounds
2个回答
0
投票

摘要:正则表达式确实是

onethree
   ^
(?=two)

^指向插入(?=two)作为检查的位置。因为向前看是three,所以它永远不会是two并且整个正则表达式将始终fail

将正则表达式更改为one(?=two).*?three将匹配onetwothree


0
投票

我建议使用站点https://regex101.com,该站点可以播放和测试正则表达式,并为您提供有关正则表达式如何工作的非常详细的说明。

您的正则表达式将始终失败,因为不可能同时匹配两个和三个。您可以在此regex调试器的屏幕快照中看到,它测试了“两个”的正向查找后,它从两个开头的位置再次开始匹配,然后尝试匹配三个,这失败了。

match step 9

通过regex101调试器显示的正则表达式匹配的动画记录:

animated match step recording

© www.soinside.com 2019 - 2024. All rights reserved.