Regex:以任何顺序匹配的单词列表,但仅当相邻/以最多n个单词分隔时

问题描述 投票:0回答:1

如果已经在某个地方存在,请提前道歉,但是我只能找到有关如何以任意顺序匹配多个子字符串或以最多n个单词分隔(不能一次都匹配)的建议。我对正则表达式也很陌生。

我需要在python中实现一个条件,在该条件中,许多术语“以任何顺序”出现但以例如最多1个字,或相邻。我已经找到了一种使用环视实现“以任何顺序”部分的方法,但是它并不能解决相邻问题(最多间隔1个单词)的问题。举例说明:

re.search("^.*(?=.*word1\s*\w*\sword2)(?=.*\w*)(?=.*word3\w*).*$", "word1 filler word2 and word3")

这应该以任何顺序匹配“ word1 word2”或“ word1 max1word word2”和“ word3 *”,在这种情况下,用一个单词分隔开-确实如此。但是,它还会匹配一个字符串,在该字符串中,术语用两个或多个单词分隔,这是不应该的。我尝试这样做:

re.search("^.*(?=\s?word1\s*\w*\sword2)(?=\s?\w*)(?=\s?word3\w*).*$", "word1 word2 word3")

希望使用\ s吗?在每个带括号的术语的开头而不是。*都可以解决此问题,但这根本不起作用(即使应该有一个也不匹配)。

有人知道解决方案吗?

编辑:只是为了澄清,在实际的模式中,我正在寻找的不仅仅是两个单独的字符串,因此写出每种可能的组合都不可行。

python regex regex-lookarounds
1个回答
0
投票

嗯,您的问题还不是很清楚,但是您可以尝试一下,假设word1

word2
© www.soinside.com 2019 - 2024. All rights reserved.