[英]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.