正则表达式用于匹配除标点符号以外的所有非单词?

2024-10-01 22:32:49 发布

您现在位置:Python中文网/ 问答频道 /正文

像这样的句子:

sent = "This i$s a s[[]ample sentence.\nAnd another <<one>>.
        \nMoreover, it is 'filtered'!"

我想要:

^{pr2}$

因此,我认为使用re.sub应该是一种方法。然而,RegEx并没有像预期的那样工作(就像它总是这样^^)。在

我的想法是使用\W匹配每个非单词,然后排除{}来保留标点符号。我最后一次尝试的正则表达式是:

re.sub(r"(\W[^\.\,\;\?\!])", "", sent)

不幸的是,[^\.\,\;\?\!]与不包含[.,;!?]的任何内容都匹配,而不是简单地说“donot逐字匹配这些字符”。在

如何从匹配中排除这些字符?在


Tags: reisanotheritthis字符onesentence
1条回答
网友
1楼 · 发布于 2024-10-01 22:32:49

\W需要集成到否定字符类中。\W[^\w]相同,因此您将得到[^\w.,;!?]。您应该重复这个字符类,以便在一个步骤中匹配连续的出现-[^\w.,;!?]+。在

似乎你也希望保留空格,所以你应该把它们添加到你的角色类中。在

随着问题的深入,您还想用空格替换换行符,!替换为.。这使它成为一个多步骤的解决方案。首先过滤掉任何不需要的[^\w.,;!? \n]+,在下一步中,将\n替换为,将{}替换为.。在

相关问题 更多 >

    热门问题