Regex 具有可选开头和结尾的Python正则表达式
我试图从两个表达式之间提取一个字符串,这两个表达式可能在每个示例中都存在,也可能不存在,即:Regex 具有可选开头和结尾的Python正则表达式,regex,python-3.x,Regex,Python 3.x,我试图从两个表达式之间提取一个字符串,这两个表达式可能在每个示例中都存在,也可能不存在,即: 礼物来自:朱利叶斯·E·格雷戈维奇(Julius E.Gregovich)从10B公寓送给:布鲁斯 福克 里昂·克罗斯和玛丽·威廉姆斯致:肯尼斯·J·S·安德鲁斯 发件人:玛丽·R·威廉姆斯 在每一个例子中,我想提取“from:”和“to:”之间的内容,因此: 朱利叶斯·格雷戈维奇,公寓10B 利昂·克罗斯和玛丽·威廉姆斯 玛丽·R·威廉姆斯 但我无法解决缺少关键字的问题。到目前为止,我尝试的是
- 礼物来自:朱利叶斯·E·格雷戈维奇(Julius E.Gregovich)从10B公寓送给:布鲁斯 福克
- 里昂·克罗斯和玛丽·威廉姆斯致:肯尼斯·J·S·安德鲁斯
- 发件人:玛丽·R·威廉姆斯
- 朱利叶斯·格雷戈维奇,公寓10B
- 利昂·克罗斯和玛丽·威廉姆斯
- 玛丽·R·威廉姆斯
(?:from:)(.*?)(?=from:)|(.*?)(?=>to:)
但我无法在两个关键字都存在的情况下工作以下是我的工作方式:
(?:.*from:)(.+?)(?:to:....*$)
演示:
您所需的返回值将位于第一个也是唯一一个捕获组中。以下是我的操作方法:
(?:.*from:)(.+?)(?:to:....*$)
演示:
您想要的返回值将位于第一个也是唯一一个捕获组。您的意思是使用3个捕获组吗<代码>(?:from:(.*)到:| from:(.*)到:(.*))有可能两者都不存在吗?在这种情况下,它应该匹配所有内容还是什么都不匹配?您可以使用这两个选项向regexp添加第三个选项。您的意思是使用3个捕获组吗<代码>(?:from:(.*)到:| from:(.*)到:(.*))有可能两者都不存在吗?在这种情况下,它应该匹配所有内容还是什么都不匹配?您可以使用这两种内容向regexp添加第三个选项。