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)+)+)