我有以下表現:做一個負向前查找不區分大小寫
$exp = "/^(?!.*?that).*$/";
這是爲了匹配不包含「」任何線。
我有以下三個句子:
$str = array(
"I like this sentence.", #line1
"I like that sentence.", #line2
"I link THAT sentence." #line3
);
匹配是大小寫敏感的,因此僅線1和3是匹配的。到現在爲止還挺好。
不過,我想,使其不區分大小寫的,所以它僅匹配線1.我有一個內嵌修改,即「(-i ...?)」的嘗試:
$exp = "/^(?!.*?(?i:that)).*$/";
,並作爲一個標誌,即 「/ ...... /我」:
$exp = "/^(?!.*?that).*$/i";
,但無濟於事。
我運行下面的循環搜索:
foreach($str as $s) {
preg_match_all($exp, $s, $matches);
var_dump($matches);
}
與輸出:
array (size=1)
0 =>
array (size=1)
0 => string 'I like this sentence.' (length=21)
array (size=1)
0 =>
array (size=0)
empty
array (size=1)
0 =>
array (size=1)
0 => string 'I link THAT sentence.' (length=21)
和在線演示,請訪問:https://regex101.com/r/bs9rzF/1
我會感謝任何提示我如何使我的正則表達式不區分大小寫。
編輯:我錯誤地使用「?-i」而不是「?-i」,正如一些貢獻者正確指出的那樣。現在修復。
'$ exp =「/^(?!.*?that)。* $/i」;'是正確的,應該工作。但是'(?-i:...'關掉了我的修飾符。要打開它:'(?i:...' –
第二次嘗試使用'$ exp =「/^(?!.*?that )。* $/i「;'[**應該工作。**](https://3v4l.org/sEXhn) – revo
的確,看起來這個問題使搜索區分大小寫而不管我的修飾符是在什麼地方否則:u標誌對於帶有口音和其他字母的語言也是必需的,即''/^(?!.*?that)。* $/ui「'感謝您的快速回答! – msoutopico