我正在编写一个脚本来逐行清理带有非 ascii 字符的文件,但是我遇到了正则表达式模式的问题。我需要一个正则表达式模式,它匹配任何以星号开头的行,可能有一个等号,并且将包含非 ascii 字符和空格。我知道如何匹配非 ascii 字符,但与其他明确定义的字符不同。
这是我需要匹配的示例行:
* = Ìÿð ÿð
这是我到目前为止的模式:
/\*[^[:ascii:]]+[\r\n]/
这将匹配以星号开头并包含非 ascii 字符的行,但如果该行中有空格或等号则不匹配。
试试下面的表达式:
^\*\s*=?\s*[[:^ascii:]\s]+[\r\n]*$
这匹配 start-of-line ^
,然后匹配零个或多个空格\s*
,后跟可选的等号,然后匹配零个或多个=?
空格\s*
。
现在,一个不错的表达式匹配一个或多个字符,这些字符是非 ascii 和空格的组合[[:^ascii:]\s]+
,请查看文档以查看字符类的语法。
最后,该表达式匹配可能结束该行的回车符和换行符的组合。
也许这 - (编辑:重读后更改)
# ^\*(?=.*[^\0-\177])
^
\*
(?= .* [^\0-\177] )