gpt4 book ai didi

php - 我不明白这个 Textile Regex

转载 作者:可可西里 更新时间:2023-11-01 00:03:01 24 4
gpt4 key购买 nike

我在 Textism Textile 的 PHP 代码中发现了以下正则表达式:

/\b ?[([]TM[])]/i

我认为自己在阅读正则表达式方面很有经验,但这对我来说还是个谜。开始很容易,但我不明白为什么在一个已经打开的字符类 [[][]] 里面有两个空字符类?

有人可以阐明这个问题吗?

最佳答案

这是一个相当神秘的...

意思是:

/     # start regex pattern
\b # word boundary
? # an optional space
[([] # char class: either '(' or '['
TM # literal 'TM'
[])] # char class: either ']' or ')'
/ # end regex pattern
i # match case insensitive

一些注意事项:

  • 在字符类中,[ 并不特殊,不需要转义(因此 [([] 有效!)
  • 在字符类中,第一个字符,可能是一个特殊字符,不需要转义([])] 因此有效:] 不需要转义!)

总而言之,它匹配 "TM" 不区分大小写,由 [(])(它们不需要匹配:"[TM)" 在大多数情况下会被匹配)。我说在大多数情况下,因为 \b ? 会导致 "[tm)" 被排除在下面演示中的匹配项之外,因为它前面有 ". " 不匹配 \b ?:

<?php
preg_match_all(
'/\b ?[([]TM[])]/i',
"... [tm) foo (TM) bar [TM] baz (tm] ...",
$matches
);
print_r($matches);
?>
/*
Array
(
[0] => Array
(
[0] => (TM)
[1] => [TM]
[2] => (tm]
)

)
*/

关于php - 我不明白这个 Textile Regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14768788/

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