我希望它只匹配每个单词的结尾
例子:
"i am test-ing., i am test.ing-, i am_, test_ing,"
输出应该是:
"i am test-ing i am test.ing i am test_ing"
最佳答案
>>> 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'
匹配一个或多个非字母数字字符 ([^\w\s]|_
) 后跟空格 (\s
) 或结尾字符串($
)。 (?= )
构造是一个先行断言:它确保匹配的空格不包含在匹配中,因此它不会被替换;只有 [\W_]+
被替换。
好的,但是为什么 [^\w\s]|_
,你会问?第一部分匹配任何非字母数字或下划线 ([^\w]
) 或空格 ([^\s]
),即标点字符。除了我们确实想要消除下划线,所以我们随后将它们包含在 |_
中。
关于python - 如何从字符串中每个单词的末尾删除特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3561999/