我为PHP编写了一个正则表达式,用于从字符串中解析缩写。
我的代码:
$re = "/(([$]?+[А-Яа-я.]+[.]){1,})/";
$str = "г. Братск, ж.р. Южный Падун, ул. Мамырская, 62А, за остановкой";
preg_match_all($re, $str, $matches);
这个脚本返回:
Array
(
[0] => Array
(
[0] => г.
[1] => ж.
[2] => л.
)
[1] => Array
(
[0] => г.
[1] => ж.
[2] => л.
)
[2] => Array
(
[0] => г.
[1] => ж.
[2] => л.
)
)
但它会这样工作:[1]=>'ж.р.', [2]=>'ул.'
这意味着,我的正则表达式解析缩写的一部分,尽管我需要获得完整的缩写。
例如,在regex101.com上,它非常有效:https://regex101.com/r/wQ7lR7/1
如何获取完整缩写('г.','ж.р.','ул.')
?
您需要使用unicode修饰符u
,http://php.net/manual/en/reference.pcre.pattern.modifiers.php.
示例:
$re = "/(([$]?+[А-Яа-я.]+[.]){1,})/u";
$str = "г. Братск, ж.р. Южный Падун, ул. Мамырская, 62А, за остановкой";
preg_match_all($re, $str, $matches);
print_r($matches);
输出:
Array
(
[0] => Array
(
[0] => г.
[1] => ж.р.
[2] => ул.
)
[1] => Array
(
[0] => г.
[1] => ж.р.
[2] => ул.
)
[2] => Array
(
[0] => г.
[1] => ж.р.
[2] => ул.
)
)