[英]Regex not working in PHP code but working fine in the sandbox
我遇到了一個奇怪的情況。 我想從地址和我的正則表達式中獲取 ZIP 代碼
\b(\w+)\b[^\w]\p{L}+$
在沙箱https://regex101.com/r/rnjecA/1中工作,但使用相同的文本,它在 PHP https://sandbox.onlinephpfunctions.com/c/3eb95中不起作用,這是怎么回事?
您可以使用
$str = <<<AAA
County Road 99
Sauk Centre, Minnesota 56378
USA
AAA;
if (preg_match('~(\w+)\R\p{L}+$~u', $str, $m)) {
print_r($m);
}
// => Array( [0] => 56378\nUSA [1] => 56378 )
請參閱PHP 在線演示。
如果您不需要整個比賽而只需要 ZIP 作為 output,請將模式替換為
'~\w+(?=\R\p{L}+$)~u'
請參閱正則表達式演示。
注意:
(\w+)\R\p{L}+$
- 匹配並捕獲任何 Unicode 字字符(由於u
標志),然后\R
匹配任何 Unicode 換行序列,然后\p{L}+
匹配一個或多個 Unicode 個字母(直到字符串結尾 ( $
)\R
解決了匹配 LF 或 CRLF 行尾的問題u
標志與 PHP PCRE/PCRE2 正則表達式一起使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.