我希望它只匹配每个单词的结尾
例:
"i am test-ing., i am test.ing-, i am_, test_ing,"
Run Code Online (Sandbox Code Playgroud)
输出应该是:
"i am test-ing i am test.ing i am test_ing"
Run Code Online (Sandbox Code Playgroud)
>>> import re
>>> test = "i am test-ing., i am test.ing-, i am_, test_ing,"
>>> re.sub(r'([^\w\s]|_)+(?=\s|$)', '', test)
'i am test-ing i am test.ing i am test_ing'
Run Code Online (Sandbox Code Playgroud)
匹配一个或多个非字母数字字符([^\w\s]|_)后跟space(\s)或字符串结尾($).该(?= )构造是一个先行断言:它确保匹配中不包含匹配的空格,因此它不会被替换; 只有[\W_]+被取代.
好的,但为什么[^\w\s]|_,你问?第一部分匹配任何非字母数字或下划线([^\w])或空格([^\s]),即标点字符.除了我们确实想要消除下划线,所以我们然后包括那些|_.
| 归档时间: |
|
| 查看次数: |
2719 次 |
| 最近记录: |