Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 正则表达式返回从行首开始的单个匹配_Regex - Fatal编程技术网

Regex 正则表达式返回从行首开始的单个匹配

Regex 正则表达式返回从行首开始的单个匹配,regex,Regex,我的文字看起来像这样(但当然更难看): 我想用正则表达式捕捉任何与日期有关的信息 On 9/02/2019, 9/03/2019 and 9/05/2019 使用正则表达式 ([a-zA-Z ]{0,5}(?:\d+\/)+\d+\s*(?:,|and|\s)+) 这似乎很好(允许字符串的前5个字符作为前导词) 但是当我告诉它时,我只想从字符串的开头开始 ^([a-zA-Z ]{0,5}(?:\d+\/)+\d+\s*(?:,|and|\s)+) 它仅在2019年2月9日捕获, 以事件开头

我的文字看起来像这样(但当然更难看):

我想用正则表达式捕捉任何与日期有关的信息

On 9/02/2019, 9/03/2019 and 9/05/2019
使用正则表达式

([a-zA-Z ]{0,5}(?:\d+\/)+\d+\s*(?:,|and|\s)+)
这似乎很好(允许字符串的前5个字符作为前导词)

但是当我告诉它时,我只想从字符串的开头开始

^([a-zA-Z ]{0,5}(?:\d+\/)+\d+\s*(?:,|and|\s)+)
它仅在2019年2月9日捕获

以事件开头,后跟日期的字符串需要区别对待

He was walking when he encountered a stray dog on 9/2/19

感谢您的快速响应。我希望能想出一个办法让它成为一场比赛。现在我明白了。将所有日期匹配项分组到另一个可以重复的组中即可完成此任务

^([a-zA-Z ]{0,5}((?:\d+\/)+\d+\s*(?:,|and|\s)+)+)

regexp一次只匹配一个日期。如果没有锚,它会为3个不同的日期匹配3次。但是有了锚,它只能和第一个匹配。谢谢你的回复。我希望能想出一个办法让它成为一场比赛。但现在我明白了,谢谢:
^([a-zA-Z]{0,5}((?:\d++/)+\d++\s*(?:,|和|\s)+)+
您需要定义要重复的内容。像(?:(?:\s*(?:,\s*)?|\s+和\s+\d{1,2}/\d{1,2}/\d{4})+上的
^。请参阅@FrancisSmart,您可以将其作为答案发布。删除此问题可能值得,因为这似乎是一个简单的用户错误。
^([a-zA-Z ]{0,5}((?:\d+\/)+\d+\s*(?:,|and|\s)+)+)