[英]PCRE regexp for both subexpressions are present?
我正在使用PHP preg_match
如何確定foo
和bar
是否同時存在,而不管它是foobar
還是barfoo
還是something bar that foo
。 顯然,類似foo.*bar|bar.*foo
可以工作,但是對於足夠復雜的foo
和bar
我非常希望不要將它們編寫兩次。
如果僅是測試,則可以輕松進行兩項檢查:一項檢查foo
,另一項檢查bar
。
否則,如果您希望在單個正則表達式中使用它,則可以使用正向先行:
(?=.*foo)(?=.*bar)
每一個都確保foo
和bar
分別位於字符串中更遠的位置,並帶有正則表達式指針所在位置的任何字符( .*
)。
編輯:此外,為了提高性能,您可以添加行錨的開頭,這樣就不必檢查字符串中的任何一個或兩個單詞都不在字符串中的每個位置:
^(?=.*foo)(?=.*bar)
我認為第二個斷言只是開銷,/ /^(?=.*?foo).*?bar/
(?=。*? /^(?=.*?foo).*?bar/
)。*? /^(?=.*?foo).*?bar/
也足夠。 如果您希望在文本中找到字符串,我建議使用非貪心形式。 我還應注意,點僅匹配非換行符,這可能是多行字符串的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.