python - 如何从字符串中每个单词的末尾删除特殊字符?

标签 python regex

我希望它只匹配每个单词的结尾

例子:

"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/

相关文章:

javascript - 正则表达式/其他方法在输入时读取用户电子邮件地址并分别隐藏/显示 div

python - 正则表达式限制模式中字符的数量

python - Python 3 中的 re.findall

python - SQLAlchemy 中的嵌套连接

python - 删除 ANSI 颜色代码时打印到 STDOUT 和日志文件

python - 如何使用 Python 连接到 Tor 浏览器

python - 类型错误 : object has no attribute '__getItem__'

regex - Erlang re 和 lists 索引基数的区别

Java 自定义解析器(如 XML)

python - 限制 Django-CMS 中的某些页面