【发布时间】:2020-11-26 19:37:41
【问题描述】:
想象一下我有一个这样的字符串:
c x c x A c x c x c B c x c x
我想找到介于“A”和“B”之间的任何“c”字符。所以在这个例子中我需要得到 3 个匹配项。
我知道我可以使用lookahead 和lookbehind 标记。所以我使用了这个正则表达式:
(?<=A).*c.*(?=B)
但它得到了 A 和 B 之间的所有刺痛:c x c x c 作为一个结果。
如果我删除 .* 部分,则根本没有匹配项。
我做了一个example here。这样你就可以看到结果了。
【问题讨论】:
-
例如
(?:\G(?!^)|A)[^AB]*?\Kc(?=.*?B),见regex101.com/r/TeHHiF/1。如果A和B是多字符字符串的占位符,请使用(?:\G(?!^)|A)(?:(?!A).)*?\Kc(?=.*?B)(demo) -
哇! @WiktorStribizew 你是个魔术师!非常感谢。请发送您的评论作为答案,以便我将其标记为答案。