Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 具有可选开头和结尾的Python正则表达式_Regex_Python 3.x - Fatal编程技术网

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·威廉姆斯
在每一个例子中,我想提取“from:”和“to:”之间的内容,因此:

  • 朱利叶斯·格雷戈维奇,公寓10B
  • 利昂·克罗斯和玛丽·威廉姆斯
  • 玛丽·R·威廉姆斯
但我无法解决缺少关键字的问题。到目前为止,我尝试的是一个有两种选择的表达式:

(?:from:)(.*?)(?=from:)|(.*?)(?=>to:)

但我无法在两个关键字都存在的情况下工作

以下是我的工作方式:

(?:.*from:)(.+?)(?:to:....*$)

演示:


您所需的返回值将位于第一个也是唯一一个捕获组中。

以下是我的操作方法:

(?:.*from:)(.+?)(?:to:....*$)

演示:


您想要的返回值将位于第一个也是唯一一个捕获组。

您的意思是使用3个捕获组吗<代码>(?:from:(.*)到:| from:(.*)到:(.*))有可能两者都不存在吗?在这种情况下,它应该匹配所有内容还是什么都不匹配?您可以使用这两个选项向regexp添加第三个选项。您的意思是使用3个捕获组吗<代码>(?:from:(.*)到:| from:(.*)到:(.*))有可能两者都不存在吗?在这种情况下,它应该匹配所有内容还是什么都不匹配?您可以使用这两种内容向regexp添加第三个选项。