我有一个字符串列表。其中一些是123-...456
的形式。可变部分“…”可以是:
123-apple-456
123-banana-456
123-456
(注意只有一个连字符)除“苹果”或“香蕉”外的任何词都无效。
对于这三种情况,我想分别匹配“apple”、“banana”和“”。注意,我从来不想要捕获连字符,但我总是想要匹配它。如果字符串不是上面描述的123-...456
形式,则根本没有匹配。
我如何写一个正则表达式来做到这一点?假设我有一个允许前视、后视、后视和非捕获组的样式。
这里的关键观察是,当你有“apple”或“banana”时,你还必须有后面的连字符,但你不想匹配它。当你匹配空白字符串时,你不得有后面的连字符。我认为封装这个断言的正则表达式是正确的。