如何使用python中的正则表达式在多个句子的段落中搜索模式?

如何使用python中的正则表达式在多个句子的段落中搜索模式?,python,python-3.x,regex,string,Python,Python 3.x,Regex,String,我有一段话叫“你好,我的名字是xyz,今天有什么可以帮你的吗?”。谢谢你打电话来祝你今天愉快。 我想要一个正则表达式,用于在单个表达式的完整段落中查找“您好,我的名字是xyz,我今天能为您做些什么”和“祝您愉快”,如果可能的话。我想找到的这两个短语之间可以是任意数量的单词/句子。您可以使用*,其中匹配任何字符,*是零或多运算符 Hello my name is .* how may I help you today.*have a nice day 另外,我想您可能需要在搜索中添加IGNORE

我有一段话叫“你好,我的名字是xyz,今天有什么可以帮你的吗?”。谢谢你打电话来祝你今天愉快
我想要一个正则表达式,用于在单个表达式的完整段落中查找“您好,我的名字是xyz,我今天能为您做些什么”和“祝您愉快”,如果可能的话。我想找到的这两个短语之间可以是任意数量的单词/句子。

您可以使用
*
,其中
匹配任何字符,
*
是零或多运算符

Hello my name is .* how may I help you today.*have a nice day
另外,我想您可能需要在搜索中添加
IGNORECASE
标志

最终代码如下所示:

重新导入
my_text=“你好,我的名字是xyz,我今天能为你做些什么……谢谢你打电话,祝你今天愉快。”
my_regex=r“你好,我的名字是。*今天我能为你做些什么。*祝你度过愉快的一天”
如果重新搜索(my_regex、my_text、re.IGNORECASE):
打印(“确定”)

您只需使用
*
,其中
匹配任何字符,
*
是零或多个运算符

Hello my name is .* how may I help you today.*have a nice day
另外,我想您可能需要在搜索中添加
IGNORECASE
标志

最终代码如下所示:

重新导入
my_text=“你好,我的名字是xyz,我今天能为你做些什么……谢谢你打电话,祝你今天愉快。”
my_regex=r“你好,我的名字是。*今天我能为你做些什么。*祝你度过愉快的一天”
如果重新搜索(my_regex、my_text、re.IGNORECASE):
打印(“确定”)

您可以使用
re.findall
查找匹配字符串
re.findall
将返回一个包含匹配项的列表。然后,可以使用if语句查找列表是否为空,从而至少包含一个匹配项。另外,不要忘记使用
re.IGNORECASE
,忽略区分大小写的行为。下面是匹配和非匹配的示例

import re

txt = 'Hello my name is xyz how may I help you today. <SOME MORE SENTNCES HERE> . Thanks for calling have a nice day. '
negative_txt = 'Hello my name is xyz how may I help you today. <SOME MORE SENTNCES HERE> . Thanks for calling have a terrible day. '


print('for the txt')
my_name_is = re.findall('HeLlO mY nAmE is', txt, flags=re.IGNORECASE)
nice_day = re.findall('have a nice day', txt, flags=re.IGNORECASE)
if my_name_is and nice_day:
    print("the sentences 'Hello my name is', and 'have a nice day', are present")
else:
    print("the sentence 'Hello my name is' or 'have a nice day', are NOT present")

print('for the negative txt')  
my_name_is = re.findall('Hello my name is', negative_txt, flags=re.IGNORECASE)
nice_day = re.findall('have a nice day', negative_txt, flags=re.IGNORECASE)
if my_name_is and nice_day:
    print("the sentences 'Hello my name is', and 'have a nice day', are present")
else:
    print("the sentence 'Hello my name is' or 'have a nice day', are NOT present")
重新导入
txt='你好,我的名字是xyz,今天有什么可以帮你的吗。谢谢你打电话来祝你今天愉快
negative_txt='您好,我的名字是xyz,今天有什么可以帮您的吗。谢谢你打电话来,祝你今天过得不愉快
打印('用于txt')
我的名字是=re.findall('你好,我的名字是',txt,flags=re.IGNORECASE)
nice_day=re.findall('have a nice day',txt,flags=re.IGNORECASE)
如果我的名字是,天气很好:
打印(“出现了“你好,我的名字是”和“祝您愉快”的句子”)
其他:
打印(“您好,我的名字是”或“祝您愉快”这句话不存在”)
打印('对于负片文本')
my_name_is=re.findall('Hello my name is',negative_txt,flags=re.IGNORECASE)
nice_day=re.findall('have a nice day',negative_txt,flags=re.IGNORECASE)
如果我的名字是,天气很好:
打印(“出现了“你好,我的名字是”和“祝您愉快”的句子”)
其他:
打印(“您好,我的名字是”或“祝您愉快”这句话不存在”)

您可以使用
re.findall
查找匹配字符串
re.findall
将返回一个包含匹配项的列表。然后,可以使用if语句查找列表是否为空,从而至少包含一个匹配项。另外,不要忘记使用
re.IGNORECASE
,忽略区分大小写的行为。下面是匹配和非匹配的示例

import re

txt = 'Hello my name is xyz how may I help you today. <SOME MORE SENTNCES HERE> . Thanks for calling have a nice day. '
negative_txt = 'Hello my name is xyz how may I help you today. <SOME MORE SENTNCES HERE> . Thanks for calling have a terrible day. '


print('for the txt')
my_name_is = re.findall('HeLlO mY nAmE is', txt, flags=re.IGNORECASE)
nice_day = re.findall('have a nice day', txt, flags=re.IGNORECASE)
if my_name_is and nice_day:
    print("the sentences 'Hello my name is', and 'have a nice day', are present")
else:
    print("the sentence 'Hello my name is' or 'have a nice day', are NOT present")

print('for the negative txt')  
my_name_is = re.findall('Hello my name is', negative_txt, flags=re.IGNORECASE)
nice_day = re.findall('have a nice day', negative_txt, flags=re.IGNORECASE)
if my_name_is and nice_day:
    print("the sentences 'Hello my name is', and 'have a nice day', are present")
else:
    print("the sentence 'Hello my name is' or 'have a nice day', are NOT present")
重新导入
txt='你好,我的名字是xyz,今天有什么可以帮你的吗。谢谢你打电话来祝你今天愉快
negative_txt='您好,我的名字是xyz,今天有什么可以帮您的吗。谢谢你打电话来,祝你今天过得不愉快
打印('用于txt')
我的名字是=re.findall('你好,我的名字是',txt,flags=re.IGNORECASE)
nice_day=re.findall('have a nice day',txt,flags=re.IGNORECASE)
如果我的名字是,天气很好:
打印(“出现了“你好,我的名字是”和“祝您愉快”的句子”)
其他:
打印(“您好,我的名字是”或“祝您愉快”这句话不存在”)
打印('对于负片文本')
my_name_is=re.findall('Hello my name is',negative_txt,flags=re.IGNORECASE)
nice_day=re.findall('have a nice day',negative_txt,flags=re.IGNORECASE)
如果我的名字是,天气很好:
打印(“出现了“你好,我的名字是”和“祝您愉快”的句子”)
其他:
打印(“您好,我的名字是”或“祝您愉快”这句话不存在”)

您希望从上面得到的确切输出是什么?还有,你已经试过什么了?是的,请显示你想要的输出。我想知道这些字符串是否出现在段落中。我对任何特定的输出都不感兴趣,不管它是否在段落中。我有一个音频通话记录,我需要验证这些字符串短语是否存在于记录中,您希望从上面得到的确切输出是什么?还有,你已经试过什么了?是的,请显示你想要的输出。我想知道这些字符串是否出现在段落中。我对任何特定的输出都不感兴趣,不管它是否在段落中。我有一个音频通话记录,我需要验证这些字符串短语是否存在于记录中