我很难扩展下面的表达式来匹配和删除数字:
[^w -]|_|-(?!w)|(?<!w)-
的例子:
123 !"§$%&/()= äüöüÄÖÜÄßßßß hello-123, hello-hello, hello-.
Exprected输出:
äüöüÄÖÜÄßßßß hello hello-hello hello
可以使用
-?d+-?|[^w -]|_|-(?!w)|(?<!w)-
-*d+(?:.d+)?-*|[^w -]|_|-(?!w)|(?<!w)-
参见regex演示。
-?d+-?|
部分匹配
-?
-可选-
d+
-一个或多个数字-?
-可选-
|
-或(其他替代方案)。
-*d+(?:.d+)?-*
部分也匹配浮点值,并且匹配数字两端的0个或多个连字符。
将-
替换为W
以匹配任何非字字符。
参见Python演示:
import re
text = '123 !"§$%&/()= äüöüÄÖÜÄßßßß hello-123, hello-hello, hello-.'
print( re.sub(r'-?d+-?|[^w -]|_|-(?!w)|(?<!w)-', '', text).strip() )
# => äüöüÄÖÜÄßßßß hello hello-hello hello