构建正则表达式以至少识别给定的

2024-06-11 21:26:24 发布

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

我有一个正则表达式,由一个单词和一系列单词组成。你知道吗

例如: 你知道吗

pattern = 'word \\w+ \\w+ \\w+"
result = [text[match.start():match.end()] for match in re.finditer(pattern, text)]

如何修改正则表达式,以便在间隔中的元素数较少时也能识别它?例如,如果单词在字符串的末尾,我希望它也返回该间隔。你知道吗

总是尽可能返回最大可能的模式。你知道吗


Tags: textinre元素for间隔matchresult
1条回答
网友
1楼 · 发布于 2024-06-11 21:26:24

您的'word \\w+ \\w+ \\w+"正则表达式匹配一个word,然后再匹配3个“单词”(空格分隔)。您想将这些单词中的0到3个匹配起来。使用

re.findall(r'word(?:\s+\w+){0,3}', s)

或者,要允许任何非单词字符位于“单词”之间,请将\s替换为\W

re.findall(r'word(?:\W+\w+){0,3}', s)

详细信息:

  • word-word字符串
  • (?:\s+\w+){0,3}-0到3序列({0,3}limiting quantifier的贪婪版本,它将匹配尽可能多的出现):
    • \s+-1+空格
    • \w+-1个或多个单词字符。你知道吗

参见regex demo。你知道吗

相关问题 更多 >