簡體   English   中英

兩個子表達式都存在PCRE正則表達式?

[英]PCRE regexp for both subexpressions are present?

我正在使用PHP preg_match如何確定foobar是否同時存在,而不管它是foobar還是barfoo還是something bar that foo 顯然,類似foo.*bar|bar.*foo可以工作,但是對於足夠復雜的foobar我非常希望不要將它們編寫兩次。

如果僅是測試,則可以輕松進行兩項檢查:一項檢查foo ,另一項檢查bar

否則,如果您希望在單個正則表達式中使用它,則可以使用正向先行:

(?=.*foo)(?=.*bar)

每一個都確保foobar分別位於字符串中更遠的位置,並帶有正則表達式指針所在位置的任何字符( .* )。

編輯:此外,為了提高性能,您可以添加行錨的開頭,這樣就不必檢查字符串中的任何一個或兩個單詞都不在字符串中的每個位置:

^(?=.*foo)(?=.*bar)

我認為第二個斷言只是開銷,/ /^(?=.*?foo).*?bar/ (?=。*? /^(?=.*?foo).*?bar/ )。*? /^(?=.*?foo).*?bar/也足夠。 如果您希望在文本中找到字符串,我建議使用非貪心形式。 我還應注意,點僅匹配非換行符,這可能是多行字符串的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM