我为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
如何获得完整缩写('г.','ж.р.','ул.')
?
答案 0 :(得分:2)
您需要使用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] => ул.
)
)