我有一个字符串列表。其中一些具有形式123-...456
。可变部分“ ...”可以是:
- 字符串“ apple”后跟连字符,例如
123-apple-456
- 字符串“ banana”后跟连字符,例如
123-banana-456
- 一个空白字符串,例如
123-456
(请注意,只有一个连字符)
除“ apple”或“ banana”外,其他任何单词均无效。
对于这三种情况,我想分别匹配“ apple”,“ banana”和“”。请注意,我从不希望捕获连字符,但是我总是想匹配它。如果字符串不是上述形式123-...456
,则根本没有匹配项。
如何编写正则表达式来做到这一点?假设我有允许先行,后进,环顾和不捕获群组的功能。
此处的主要观察结果是,当您拥有“苹果”或“香蕉”时,还必须具有结尾的连字符,但您不希望将其匹配。并且,当您匹配空白字符串时,您必须没有结尾的连字符。我认为,封装此断言的正则表达式将是正确的。