我正在嘗試使用 javascript regexp 解決以下情況:
我有以下文字:
<foo>a</foo>blah <bar>blah</bar><abc>dsdfsdf</abc> blah<foo>b</foo><blah></blah>{COMPANY_NAME}
我想捕捉{COMPANY_NAME}前一個 foo 標簽中的with 文本。
所以在這里我試圖找到b存在于 COMPANY_NAME 后面的第一個 foo 標簽內的文本。
我發現這樣做的唯一方法是從一個貪婪的角色開始,這意味著使用這個:
/.*<foo>(.*?)<\/foo>.*?{COMPANY_NAME}/
如果我不從begginging( .*)處貪婪的選擇開始,那么它會提供第一個foo而不是最后一個,問題是這個檔案真的很大,需要很多記憶體,需要很長時間回傳每場比賽,我做了很多比賽。
有沒有辦法在不從貪婪開始的情況下解決它.*?并且只是為了正確回傳最后一個 foo 以便匹配只包含我需要的而不是更多?
謝謝
uj5u.com熱心網友回復:
您可以在沒有初始貪婪的情況下使用此正則運算式.*:
<foo>((?:(?!<\/?foo>).)*?)<\/foo>(?:(?!<\/?foo>).)*?{COMPANY_NAME}
正則運算式演示
這(?:(?!<\/?foo>).)*?是匹配零個或多個字符的緩和貪婪模式,其中每個字符后面不能跟<foo>或</foo>。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/401848.html
標籤:javascript 正则表达式
