gpt4 book ai didi

regex - 如何在字符串中查找匹配模式而不考虑顺序?

转载 作者:行者123 更新时间:2023-12-05 07:22:23 25 4
gpt4 key购买 nike

我正在尝试匹配两个字符串之间的模式。例如,我有

pattern_search = ['education four year'] 
string1 = 'It is mandatory to have at least of four years of professional education'
string2 = 'need to have education four years with professional degree'

当我尝试在 pattern_search 和 string1 & string2 之间找到匹配项时,我正在尝试一种说真的方法。

当我使用正则表达式库时,match/search/findall 对我没有帮助。在 string 中我有所有需要的单词但不按顺序,在 string2 中我有一个额外的单词加上复数。

目前,我正在拆分字符串检查 pattern_search 中的每个单词和预处理后的 string1 和 2 中的每个单词,有什么方法可以找到句子之间的匹配吗?

最佳答案

你应该好好看看 difflib图书馆,特别是 get_close_matches函数返回“足够接近”的单词以满足可能不完全匹配的单词的要求。请务必相应地调整您的阈值 (cutoff=)。

from difflib import get_close_matches
from re import sub

pattern_search = 'education four year'
string1 = 'It is mandatory to have at least of four years of professional education'
string2 = 'need to have education four years with professional degree'
string3 = 'We have four years of military experience'

def match(string, pattern):
pattern = pattern.lower().split()
words = set(sub(r"[^a-z0-9 ]", "", string.lower()).split()) # Sanitize input
return all(get_close_matches(word, words, cutoff=0.8) for word in pattern)

print(match(string1, pattern_search)) # True
print(match(string2, pattern_search)) # True
print(match(string3, pattern_search)) # False

如果你想让 pattern_search 成为模式列表,那么你应该循环遍历 match 函数。

关于regex - 如何在字符串中查找匹配模式而不考虑顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56545363/

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