我有以下文字
<root>
<path>/my/data</path>
<paths>/global/data</paths>
</root>
我正在嘗試為/my/data/且/global/data僅獲取一個正則運算式捕獲組。我試過這個:
^\s*(?=<path>|<paths>)(.*)$
但我不明白為什么這些(.*)組是:
<path>/my/data</path>
<paths>/global/data</paths>
有什么辦法可以從捕獲組中排除正向前瞻?
uj5u.com熱心網友回復:
的.*消耗<path>和<paths>被檢查與前瞻。看,(?=<path>|<paths>)(.*)在您的正則運算式中,首先檢查當前位置是否存在<path>或<paths>緊鄰當前位置的右側,如果存在,則(.*)隨時使用(=將匹配的文本添加到整體匹配值并將正則運算式索引推進到當前子模式匹配的末尾) <path>or <paths>since.*匹配零個或多個除換行符以外的字符,盡可能多。
使前瞻模式消耗:
^\s*(?:<path>|<paths>)(.*)$
請參閱
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334561.html
標籤:正则表达式
上一篇:如何在Emacs中殺死具有以下模式的每一行:# NAME:?
下一篇:帶有If條件問題的正則運算式
