[英]RegExp capturing non-match
我有一个游戏的正则表达式,它应该以go [anything]
或[cardinal direction]
的形式匹配字符串,并捕获[anything]
或[cardinal direction]
。 例如,以下将匹配:
go north
go foo
north
以下不匹配:
foo
go
我能够使用两个单独的正则表达式来做到这一点: /^(?:go (.+))$/
匹配第一种情况,和/^(north|east|south|west)$/
匹配第二种情况。 我试图将正则表达式组合为/^(?:go (.+))|(north|east|south|west)$/
。 正则表达式正确匹配我的所有测试用例,但它没有正确捕获第二种情况。 我尝试将正则表达式插入 RegExr 并注意到即使第一个案例没有匹配,它仍然被捕获。
我该如何纠正?
尝试使用正向后视功能来查找单词“go”。
(north|east|south|west|(?<=go ).+)$
请注意,此解决方案会阻止您在正则表达式的开头包含^
,因为文本“go”实际上并未包含在该组中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.