gpt4 book ai didi

php - 使否定前瞻不区分大小写

转载 作者:行者123 更新时间:2023-12-04 21:50:05 24 4
gpt4 key购买 nike

我有以下表达式:

$exp = "/^(?!.*?that).*$/";

这意味着匹配任何不包含“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)).*$/";

并作为标志,即“/.../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

我很感激有关如何使我的正则表达式不区分大小写的任何提示。

编辑:正如一些贡献者正确指出的那样,我错误地使用了“?-i”而不是“?-i”。现在固定。

最佳答案

您的第一个正则表达式 ^(?!.*?that).*$ 与区分大小写无关,因为您没有使用任何不区分大小写的修饰符。

正则表达式匹配第一句和第三句,因为您的正则表达式是说 ​​ 不应该是 是一个词 that ( 此处区分大小写 ) 第一句和第三句中的第三句 (TH195) 为真 0x104 与 不同)

要仅匹配第一句话,您可以使用内联修饰符 (?i),例如

(?i)^(?!.*?that).*$

here

顺便说一句,您的 /^(?!.*?that).*$/i 正则表达式也是正确的。

关于php - 使否定前瞻不区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44475636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com