Il est un est un peu cryptique ...
Voici ce que cela signifie:
/ # 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
Quelques choses à noter:
- dans une classe de caractères,
[
n'est pas spécial et ne doit pas être échappé ([([]
est donc valide!)
- à l'intérieur d'une classe de caractères, le premier caractère, éventuellement un caractère spécial, n'a pas besoin d'être échappé (
[])]
est à cet effet valide: ]
besoins ne peut échapper!)
Pour résumer, il correspond "TM"
insensible à la casse entouré soit [
ou (
et ]
ou )
(ils ne doivent pas nécessairement être apparié: "[TM)"
sera apparié dans la plupart des cas). Je dis dans la plupart des cas, parce que \b ?
causera "[tm)"
à exclure des matches de la démo ci-dessous car il est précédé par ". "
qui ne correspond pas à \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]
)
)
*/
Ce regex ne compile pas ... – lonesomeday
Le regex compile correctement. –
@lonesomeday, tout dépend de la langue/de l'outil que vous utilisez. C'est un PCRE valide. Vois ma réponse. –