使用w.*的正则表达式模式不匹配以外来字符开头的文本,如Ä

2022-03-29 00:00:00 regex php preg-match preg-match-all

我有以下已成功使用的正则表达式:

preg_match_all('/(d+)
(w.*)
(d{3}.d{3}.d{2})
(d.*)
(d.*)/', $text, $matches)

不过,我刚刚发现,如果(w.*)部分匹配的文本以Ä这样的外来字符开头,则它与任何内容都不匹配。

谁能帮我找出匹配以任何字符开头的字符串的正确模式应该是什么,而不是(w.*)

非常感谢


解决方案

如果do要匹配元音,则添加regex/u修饰符,或使用pL代替w。这将允许正则表达式匹配ASCII范围之外的字母。

参考:http://www.regular-expressions.info/unicode.html
和http://php.net/manual/en/regexp.reference.unicode.php

相关文章