正则表达式与应有的不匹配
Regex doesn't match what it should
我正在尝试过滤除字母数字字符、俄语字母、换行符、空格、逗号、点、问号、感叹号、斜线、#
、@
、冒号和括号。
到目前为止我的代码:
re.sub(r"[^А-я\w\d"+"\n"+" ,.?!ё/@#:()]", "", string)
但是,它不会清除以下字符串:""
。
为什么不,我怎样才能做到这一点?
编辑::忘记提及它在 https://regexr.com/
时按预期工作
你可以让它只匹配你需要的类型。而不是你不需要的字符串类型。
这应该有效 [А-я\w\d\"+\"\n\"+\" ,.?!ё/@#:()]
您可以检查 this link 处的字符串,您会看到 "" 字符串由属于 \p{L}
类别的字符组成。您的正则表达式以 [^А-я\w\d
开头,这意味着它匹配除俄语字符以外的任何字符(ё
(稍后定义)和 Ё
除外)、任何 Unicode 字母(any 因为在 Python 3 中,\w
- 默认情况下 - 匹配任何 Unicode 字母数字字符和连接符。
您似乎只想删除俄文和英文字母,因此请使用相应的范围:
r"[^А-ЯЁа-яёA-Za-z0-9\n ,.?!/@#:()]+"
匹配
以外的一个或多个chas
А-ЯЁа-яё
- 俄文字母
A-Za-z
- ASCII 字母
0-9
- ASCII 数字
\n ,.?!/@#:()
- 换行符、space、逗号、点、问号和感叹号、斜线、& 符号、井号、冒号和圆括号。
我正在尝试过滤除字母数字字符、俄语字母、换行符、空格、逗号、点、问号、感叹号、斜线、#
、@
、冒号和括号。
到目前为止我的代码:
re.sub(r"[^А-я\w\d"+"\n"+" ,.?!ё/@#:()]", "", string)
但是,它不会清除以下字符串:""
。
为什么不,我怎样才能做到这一点?
编辑::忘记提及它在 https://regexr.com/
时按预期工作你可以让它只匹配你需要的类型。而不是你不需要的字符串类型。
这应该有效 [А-я\w\d\"+\"\n\"+\" ,.?!ё/@#:()]
您可以检查 this link 处的字符串,您会看到 "" 字符串由属于 \p{L}
类别的字符组成。您的正则表达式以 [^А-я\w\d
开头,这意味着它匹配除俄语字符以外的任何字符(ё
(稍后定义)和 Ё
除外)、任何 Unicode 字母(any 因为在 Python 3 中,\w
- 默认情况下 - 匹配任何 Unicode 字母数字字符和连接符。
您似乎只想删除俄文和英文字母,因此请使用相应的范围:
r"[^А-ЯЁа-яёA-Za-z0-9\n ,.?!/@#:()]+"
匹配
以外的一个或多个chasА-ЯЁа-яё
- 俄文字母A-Za-z
- ASCII 字母0-9
- ASCII 数字\n ,.?!/@#:()
- 换行符、space、逗号、点、问号和感叹号、斜线、& 符号、井号、冒号和圆括号。