对于 PCRE(Perl 兼容正则表达式)风格(由 PHPpreg_*
函数使用):
/^([^:]+:)\n([ ()0-9-]+)/
^ ^^
| line-break
|
Begin of string anchor
将锚点放在字符串的开头并明确命名换行符(LF; \n
)。
此\n
换行符专门针对 unix。所以这不能是你的字符串中的换行符。因此,为了还支持 CRLF、LF 和 CR 序列(即 Dos、Unix 和 Mac),您可以使用
(?>\r\n|\n|\r)
还有更多,您甚至可以配置正则表达式引擎,然后仅\R
用于换行符。您可以在以下位置找到详细概述:
要在 PHP 中使用这些正则表达式,您需要小心并使用单引号字符串,否则您必须转义每个字符串\
以不逐字输入换行符,因为在 PHP 中的双引号字符串中,如果您编写\n
(但不是\R
)。因此,请注意引号。
例子:
$subject = 'T. Condesa:
(52) (555) 1111 2222T. Polanco:
(52) (55) 1111-2222T. San Ángel:
(52) (55) 1111-3333T. Paseo Arcos Bosques:
(52) (55) 2222-3333T. Antara:
(52) (55) 1111-1111T. Interlomas:
(52) (55) 1111-1111T. Prado Norte:
(52) (55) 1111 1111T. Reforma:';
preg_match('/^([^:]+:)\R([ ()0-9-]+)/', $subject, $matches)
&& vprintf('%2$s %3$s', $matches); # prints 'T. Condesa: (52) (555) 1111 2222'