してください。は、私は次の式を持つ負の先読み大文字と小文字を区別しない
$str = array(
"I like this sentence.", #line1
"I like that sentence.", #line2
"I link THAT sentence." #line3
);
一致は大文字と小文字が区別され、したがって、線のみ1および3は一致している:
私は、次の3つの文を持っています。ここまでは順調ですね。
しかし、それだけで1行目と一致するように、私は、それは大文字と小文字を区別しないしたいと思い、私はインライン修飾子、つまり「(-i ...?)」で試してみました:
$exp = "/^(?!.*?(?i:that)).*$/";
とフラグとして、すなわち "/ .../I":
$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
私はおよそ任意のヒントに感謝だろう私は正規表現を大文字と小文字を区別しないようにすることができます。
EDIT:一部の投稿者が正しく指摘するように、私は間違って "?-i"の代わりに "?-i"を使用していました。今修正されました。
'$ exp =" /^(?!.*?)* $/i ";"は正しく、正しく動作するはずです。しかし、 '(?-i:...'はi修飾子をオフにします。 '(?i:...') –
'$ exp =" /^(?!.*?that )* $/i ";' [**は動作するはずです**](https://3v4l.org/sEXhn) – revo
実際、i修飾子に関係なく、大文字と小文字を区別して検索する問題があるようですelse:アクセントや他のアルファベットを持つ言語、すなわち '' /^(?!.*?)にもuフラグが必要です。* $/ui "'あなたの素早い答えをありがとう! – msoutopico