确保在复杂的正则表达式中找到至少一个字符

时间:2018-08-12 21:11:37

标签: python regex python-3.x

我编写了以下正则表达式模式:

import re

pattern = re.compile(r"([^\w]*)(\w*)([^\w]*)")

此模式的预期目标基本上是将单词(由(\w*)表示)与其他“空格”字符(由([^\w*])表示)序列分开。如果没有单词,它将仍然捕获匹配字符串中的所有其他字符,这就是在*中而不是(\w*)中使用+的原因。

它照常工作,但是由于每个组中的*pattern.findall(string)(其中string是要匹配的任何字符串)也包含元组('', '', '') —即其中每个组都是一个空字符串。例如,pattern.findall("/@This -&is//#a - string&&")返回[('/@', 'This', ' -&'), (' -&', 'is', '//#'), ('//#', 'a', ' - '), (' - ', 'string', '&&'), ('', '', '')]

有没有一种方法可以确保它不与“空”字符串匹配,同时又能保持当前功能?我可以从列表中删除最后一个元组,但是我敢肯定还有一个更优雅的解决方案。

我尝试过

    pattern = re.compile(r"(?:^([^\w]+$))|(?:([^\w]*)(\w+)([^\w]*))")

但是它没有按预期工作。

0 个答案:

没有答案