1

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

这是我需要匹配的示例行:

* = Ìÿð ÿð

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

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

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

4

2 回答 2

3

试试下面的表达式:

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

这匹配 start-of-line ^,然后匹配零个或多个空格\s*,后跟可选的等号,然后匹配零个或多个=?空格\s*

现在,一个不错的表达式匹配一个或多个字符,这些字符是非 ascii 和空格的组合[[:^ascii:]\s]+,请查看文档以查看字符类的语法。

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

正则表达式 101 演示

于 2013-09-17T16:31:13.937 回答
0

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

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

 ^ 
 \*
 (?= .* [^\0-\177] )
于 2013-09-17T16:38:07.640 回答