[英]How do I force regex to match the longest possible part of the pattern.
Pattern : "I (?<a>[\w\W]*)(want to match (?<b>longest))? available"
or "I ((?<a>[\w\W]*)|(want to match (?<b>longest))?)+ available"
字符串: “我想匹配最長的可用”
匹配后我們有: a =“想要匹配最長”,b =“”
但我想: a =“”,b =“最長”
RegEx默認為“貪婪”,這意味着它將盡可能匹配。 為了重復懶惰 ,添加一個?
。
I <?a:[\w\W]*?>(want to match <?b:longest>)? available
^
現在這將懶惰地匹配0+ [\\w\\W]
字符,或換句話說:直到表達式可以繼續匹配(一旦它看到want to match longest available
等等)。
示例: 貪婪與懶惰 (單擊“正則表達式調試器”以查看每個重復操作如何操作)。
同樣的想法與你的另一個表達相關,但貪婪在不同的位置是一個問題:
I ((?<a>[\w\W]*)|(want to match (?<b>longest))?)+? available
^
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.