Delimitadores

Cuando se usan funciones PCRE, se requiere que el patrón esté encerrado entre delimitadores. Un delimitador puede ser cualquier carácter no alfanumérico, que no sea una barra invertida, y que no sea un espacio en blanco.

Los delimitadores que se usan a menudo son barras oblícuas (/), signos de número (#) y virgulillas (~). Los siguientes ejemplos son todos patrones delimitados válidos.

/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%

También es posible utilizar los delimitadores estilo corchete, donde los corchetes de apertura y cierre son los delimitadores inicial y final, respectivamente. (), {}, [] y <> son todos pares de delimitadores válidos.

(this [is] a (pattern))
{this [is] a (pattern)}
[this [is] a (pattern)]
<this [is] a (pattern)>
Bracket style delimiters do not need to be escaped when they are used as meta characters within the pattern, but as with other delimiters they must be escaped when they are used as literal characters.

Si el delimitador necesita ser comparado dentro del patrón se debe escapar usando una barra invertida. Si el delimitador aparece a menudo dentro del patrón, es una buena idea escoger otro delimitador para aumentar la legibilidad.

/http:\/\//
#http://#
La función preg_quote() se puede usar para escapar una cadena para inyectarla dentro de un patrón y su segundo parámetro opcional de puede usar parar especificar el delimitador a escapar.

Puede añadir modificadores de patrón después del delimitador final. El siguiente es un ejemplo de comparación insensible a mayúsculas-minúsculas:

#[a-z]#i

add a note add a note

User Contributed Notes 6 notes

up
23
Pedro Gimeno
2 years ago
Note that bracket style opening and closing delimiters aren't a 100% problem-free solution, as they need to be escaped when they aren't in matching pairs within the expression. That mismatch can happen when they appear inside character classes [...], as most meta-characters lose their special meaning. Consider these examples:

<?php
  preg_match
('{[{]}', ''); // Warning: preg_match(): No ending matching delimiter '}'
 
preg_match('{[}]}', ''); // Warning: preg_match(): Unknown modifier ']'
 
preg_match('{[}{]}', ''); // Warning: preg_match(): Unknown modifier ']'
?>

Escaping them solves it:

<?php
  preg_match
('{[\{]}', ''); // OK
 
preg_match('{[}]}', ''); // OK
 
preg_match('{[\}\{]}', ''); // OK
?>
up
2
sln
1 year ago
The dirty little delimiter secret they don't tell you ->
Examples: Balanced delims {\d{2}Some\\{33\\}\w{5}} parses to
\d{2}Some\\{33\\}\w{5} and {\d{2}Some\{33\}\w{5}} parses to \d{2}Some{33}\w{5}. 
Un-Balanced delims +\d{2}Some\+33\+\w{5}+ parses to \d{2}Some+33+\w{5} and
+\d{2}Some\\+33\\+\w{5}+ won't parse because the delimiter is unescaped.
up
3
Munin
2 years ago
preg_match('{[}]}', ''); // Warning: preg_match(): Unknown modifier ']'

preg_match('{[\}]}', ''); // OK
up
1
Anonymous
22 days ago
check out the last user contributed note on this page

http://php.net/manual/en/regexp.reference.delimiters.php
up
-2
hmelin at ya dot ru
1 year ago
A delimiter can be any ASCII non-alphanumeric, non-backslash, non-whitespace character:  !"#$%&'*+,./:;=?@^_`|~-  and  ({[<>]})
up
-61
cissyyau77 at yahoo dot com dot hk
3 months ago
you guys can call me for sex
+852 92606871
To Top