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