如何匹配,但不捕获,正则表达式的一部分?
我有一个字符串列表。其中一些是123 -… 456的形式。可变部分“…”可以是:
>字符串“apple”后跟一个连字符,例如。 123-apple-456 除“apple”或“banana”之外的任何字词都无效。 对于这三种情况,我想分别匹配“苹果”,“香蕉”和“”。注意,我不想捕获连字符,但我总是想匹配它。如果字符串不是如上所述的形式123 -… 456,则根本没有匹配。 我如何写一个正则表达式来做到这一点?假设我有一种风味,允许lookahead,lookbehind,lookaround和非捕获组。 这里的关键观察是,当你有“苹果”或“香蕉”,你也必须有结尾连字符,但你不想匹配它。当您匹配空白字符串时,您不能使用尾随连字符。封装这个断言的正则表达式将是正确的,我想。
唯一不捕获东西的方法是使用
look-around assertions:
(?<=123-)((apple|banana)(?=-456)|(?=456)) 因为即使使用non-capturing groups (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |