为什么 preg_match 找不到一些字面意思
Why does preg_match not find some literal words
使用 PHP,我正在尝试测试字符串中是否存在各种单词和模式,但无法弄清楚为什么在尝试匹配某些单词时会出现奇怪的行为。
示例 1:
为什么下面的不是return1?
$test = 'clen=a.length;for(i=0;i<clen;i++)b+=String.fromCharCode(a.charCodeAt(i)^2)';
$result = preg_match('/(string)/i', $test, $matches);
$result 始终为零,即使 "String" 出现在主题字符串中也是如此。
示例 2:
但是,假设我将我的正则表达式稍微更改为以下内容:
$test = 'clen=a.length;for(i=0;i<clen;i++)b+=String.fromCharCode(a.charCodeAt(i)^2)';
$result = preg_match('/st.+(ring)/i', $test, $matches);
上面的return是$result的值1。好像当我将单词 "string" 拆分成不同的部分时,我可以得到一个匹配项。
示例 3:
当我再次稍微修改这个例子中的正则表达式时,它也 return 为零,但我不确定为什么:
$test = 'clen=a.length;for(i=0;i<clen;i++)b+=String.fromCharCode(a.charCodeAt(i)^2)';
$result = preg_match('/(tring)/i', $test, $matches);
尝试匹配 "tring" returns 0 等字符序列,但在 "ring" 上匹配 returns 1。但是 "tring"听起来不像任何类型的特殊或保留字!
这种行为对于 "document" 和 "unescape" 等各种其他词也是相同的,我相信还有很多其他词。
我假设正则表达式引擎可能对某些词进行了不同的处理,因为它们可能在某种程度上是保留的或特殊的,但我无法找到上述行为的官方解释。
如果我遗漏了一些非常明显的东西,我深表歉意,如果有人能向我解释一下,我将不胜感激。
非常感谢。
我认为您的第一个正则表达式很好。看这里
https://regex101.com/r/tO9vN8/1
但字符集似乎有问题,我不得不重写表达式 - 如果我从该站点复制,则正则表达式不匹配。
我希望这是正确的方向...
使用 PHP,我正在尝试测试字符串中是否存在各种单词和模式,但无法弄清楚为什么在尝试匹配某些单词时会出现奇怪的行为。
示例 1: 为什么下面的不是return1?
$test = 'clen=a.length;for(i=0;i<clen;i++)b+=String.fromCharCode(a.charCodeAt(i)^2)';
$result = preg_match('/(string)/i', $test, $matches);
$result 始终为零,即使 "String" 出现在主题字符串中也是如此。
示例 2: 但是,假设我将我的正则表达式稍微更改为以下内容:
$test = 'clen=a.length;for(i=0;i<clen;i++)b+=String.fromCharCode(a.charCodeAt(i)^2)';
$result = preg_match('/st.+(ring)/i', $test, $matches);
上面的return是$result的值1。好像当我将单词 "string" 拆分成不同的部分时,我可以得到一个匹配项。
示例 3: 当我再次稍微修改这个例子中的正则表达式时,它也 return 为零,但我不确定为什么:
$test = 'clen=a.length;for(i=0;i<clen;i++)b+=String.fromCharCode(a.charCodeAt(i)^2)';
$result = preg_match('/(tring)/i', $test, $matches);
尝试匹配 "tring" returns 0 等字符序列,但在 "ring" 上匹配 returns 1。但是 "tring"听起来不像任何类型的特殊或保留字!
这种行为对于 "document" 和 "unescape" 等各种其他词也是相同的,我相信还有很多其他词。
我假设正则表达式引擎可能对某些词进行了不同的处理,因为它们可能在某种程度上是保留的或特殊的,但我无法找到上述行为的官方解释。
如果我遗漏了一些非常明显的东西,我深表歉意,如果有人能向我解释一下,我将不胜感激。 非常感谢。
我认为您的第一个正则表达式很好。看这里 https://regex101.com/r/tO9vN8/1
但字符集似乎有问题,我不得不重写表达式 - 如果我从该站点复制,则正则表达式不匹配。
我希望这是正确的方向...