正则表达式匹配字符和非ascii字符

时间:2013-09-17 16:22:27

标签: php regex

我正在编写一个脚本,用非ascii字符逐行清理文件,但我遇到了正则表达式模式的问题。我需要一个正则表达式模式,匹配任何以星号开头的行,可能有一个等号,并将包含非ascii字符和空格。我知道如何匹配非ascii字符,但不能与其他正面定义的字符匹配。

以下是我需要匹配的示例行:

* = Ìÿð ÿð

这是我到目前为止的模式:

/\*[^[:ascii:]]+[\r\n]/

这将匹配以星号开头并包含非ascii字符的行,但如果该行中有空格或等号,则不匹配。

2 个答案:

答案 0 :(得分:3)

尝试以下表达式:

^\*\s*=?\s*[[:^ascii:]\s]+[\r\n]*$

这与行尾^匹配,然后匹配零个或多个空格\s*,后跟可选的等号=?,然后是零个或多个空格{{1} }。

现在一个很好的表达式匹配一个或多个字符,这些字符是非ascii和空格\s*的组合,请检查docs以查看字符类的语法。

最后,表达式匹配回车符和换行符的组合,这些换行符可能结束该行。

Regex101 Demo

答案 1 :(得分:0)

也许这个 - (编辑:重读后改变)

 # ^\*(?=.*[^\0-\177])

 ^ 
 \*
 (?= .* [^\0-\177] )