我正在尝试使用 python 中的 re 模块匹配特定模式。我希望匹配一个完整的句子(更准确地说,它们是由空格和/或标点符号分隔的字母数字字符串序列)
例如。
- “这是一句普通话。”
- “这也是有效的”
- “This ONE也是”
我尝试了各种正则表达式组合,但我无法正确掌握模式的工作原理,每个表达式都给了我不同但莫名其妙的结果(我承认我是初学者,但仍然如此)。
我试过了:
"((\w+)(\s?))*"
据我所知,这应该匹配一个或多个字母数字,然后贪婪地跟随一个或没有空格字符,然后它应该贪婪地匹配整个模式。这不是它似乎做的,所以很明显我错了,但我想知道为什么。(我希望这会返回整个句子作为结果)对于上面提到的第一个示例字符串,我得到的结果是 [('sentence', 'sentence', ''), ('', '', ''), ('', '', ''), ('', '', '')]。
"(\w+ ?)*"
我什至不确定这个应该如何工作。官方文档(python help('re')) 说,+,? 匹配前面 RE 的 x 或 x(贪婪)重复。在这种情况下,只需将前面的 RE 空格用于“?” 还是 '\w+ ' 是前面的 RE?' ' 运算符的 RE 是什么?我得到的输出是['sentence']。
其他如 "(\w+\s?)+)" ;"((\w*)(\s??)) 等基本上是相同想法的变体,即句子是一组字母数字,后跟单个/有限数量的空格,并且这种模式重复超过。
有人能告诉我哪里出错了,为什么,为什么上面的表达式不能像我期望的那样工作?
PS 我最终得到了 "[ \w]+" 为我工作,但是这样我不能限制连续的空白字符的数量。