gpt4 book ai didi

python - 如何在 python 中以不同的顺序正则表达式搜索字符串

转载 作者:行者123 更新时间:2023-11-28 17:10:21 26 4
gpt4 key购买 nike

我有一个接受参数并尝试使用正则表达式找到匹配项的脚本。对于单个值,我没有任何问题,但是当我传递多个单词时,顺序很重要。无论提供的单词的顺序是什么,我该怎么做才能使正则表达式返回?这是我的示例脚本:

import re
from sys import argv

data = 'some things other stuff extra words'

pattern = re.compile(argv[1])
search = re.search(pattern, data)

print search
if search:
print search.group(0)
print data

所以根据我的示例,如果我将 "some things" 作为 arg 传递,那么它匹配,但是如果我传递 "things some",它不会匹配t 匹配,我希望它匹配。或者,如果 "some""things" 匹配,我希望它也返回。

传递的参数可能是正则表达式

最佳答案

我想你想要这样的东西:

search = filter(None, (re.search(arg, data) for arg in argv[1].split()))

或者

search = re.search('|'.join(argv[1].split()), data)

然后可以查看搜索结果,如果len(search) == len(argv[1].split()),则表示所有模式都匹配,如果搜索为真,则说明至少有一个匹配。

好的,我想我明白了,你可以像这样使用前瞻断言:

>>> re.search('(?=.*thing)(?=.*same)', data)

您显然可以通过编程方式构建这样的正则表达式:

re.search(''.join('(?=.*{})'.format(arg) for arg in argv[1].split()), data)

关于python - 如何在 python 中以不同的顺序正则表达式搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48001465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com