2024-06-11 21:26:24 发布
网友
我有一个正则表达式,由一个单词和一系列单词组成。你知道吗
例如: 你知道吗
pattern = 'word \\w+ \\w+ \\w+" result = [text[match.start():match.end()] for match in re.finditer(pattern, text)]
如何修改正则表达式,以便在间隔中的元素数较少时也能识别它?例如,如果单词在字符串的末尾,我希望它也返回该间隔。你知道吗
总是尽可能返回最大可能的模式。你知道吗
您的'word \\w+ \\w+ \\w+"正则表达式匹配一个word,然后再匹配3个“单词”(空格分隔)。您想将这些单词中的0到3个匹配起来。使用
'word \\w+ \\w+ \\w+"
word
re.findall(r'word(?:\s+\w+){0,3}', s)
或者,要允许任何非单词字符位于“单词”之间,请将\s替换为\W:
\s
\W
re.findall(r'word(?:\W+\w+){0,3}', s)
详细信息:
(?:\s+\w+){0,3}
{0,3}
\s+
\w+
参见regex demo。你知道吗
您的
'word \\w+ \\w+ \\w+"
正则表达式匹配一个word
,然后再匹配3个“单词”(空格分隔)。您想将这些单词中的0到3个匹配起来。使用或者,要允许任何非单词字符位于“单词”之间,请将
\s
替换为\W
:详细信息:
word
-word
字符串(?:\s+\w+){0,3}
-0到3序列({0,3}
是limiting quantifier的贪婪版本,它将匹配尽可能多的出现):\s+
-1+空格\w+
-1个或多个单词字符。你知道吗参见regex demo。你知道吗
相关问题 更多 >
编程相关推荐