【发布时间】:2020-07-09 03:56:45
【问题描述】:
我有以下正则表达式用于删除标点符号之间的空格。
re.sub(r'\s*(\W)\s*', r'\1', s)
在我的几乎所有测试用例中都可以正常工作,除了这个:
This is! ? a test! ?
我需要的
This is!? a test!?
得到
This is!?a test!?
如何不删除 ? 和“a”之间的空格?我错过了什么?
【问题讨论】:
-
re.sub(r'\s*(\W)', r'\1', s) -
感谢您的评论,这将使其他测试失败
This is a! ? test! ?(末尾有一个空格。但我仍然可能想调用 strip() -
首先要做的是使用比
\W更具体的字符类。 (最后是\s,这取决于你想做什么)。 -
你应该看看lookaheads和lookbehinds断言。
-
如果你不想匹配换行符可能这样
(?<=[?!])[^\S\r\n]+(?=[!?])regex101.com/r/CoBw69/1