Python 正则表达式不匹配:在任意位置搜索特定数量的数字
我正在尝试匹配以下格式的值:Python 正则表达式不匹配:在任意位置搜索特定数量的数字,python,regex,python-3.x,Python,Regex,Python 3.x,我正在尝试匹配以下格式的值: , ####-####-####-####### , ####-########-##### , ######-###-#-###-##-#-#### , ##-####-#####-#-###### 例如:2018-03-102018123-02-10-2019,10-20-20232316 应仅捕获,2018123-02-10-2019,10-20-20232316 开头的,是可选的。我基本上是想找到在逗号之间有5个或更多数字的值。i、 e.12345不是12
, ####-####-####-#######
, ####-########-#####
, ######-###-#-###-##-#-####
, ##-####-#####-#-######
例如:2018-03-102018123-02-10-2019,10-20-20232316
应仅捕获,2018123-02-10-2019,10-20-20232316
开头的,
是可选的。我基本上是想找到在逗号之间有5个或更多数字的值。i、 e.12345
不是123其他东西45
我的解决方案是在开始、结束和中间写3行正则表达式。开始和结束都很好,但我不知道中间该怎么走
有人能帮我解决这个问题吗
编辑#1:
提供的背景:
我用一个正则表达式和一个replace函数来替换一个大杂烩,它包含了我试图提取日期时返回的不同值
我确实在做类似于”的事情。replace('regular expression':'aaaaaa(this getfilteredout'),regex=True)
编辑#2:
我正在用它来测试我的结果
我尝试使用(?=,?)[^,]*\d{5,}[^,]*
,但由于某些原因,它与1个值匹配,因此不应该匹配
尝试以下正则表达式。这将捕获任何具有5个或更多连续数字的内容
r'.*(\d{5,}).*'
尝试以下正则表达式。这将捕获任何具有5个或更多连续数字的内容
r'.*(\d{5,}).*'
编辑
从给出的示例中,可以使用regex\S*\d{5}[^\S]*
编辑
从给出的示例来看,regex
\S*\d{5,}[^,\S]*
可以使用对不起,我的意思是5个或更多数字在一起,不在任何地方。即12345不是123 stuff 45这捕获了“2018-03-10”以及其他内容,我不想要“2018-03-10”“因为它在逗号之前没有5个数字。5个数字必须位于一起,并排,在逗号之间的某个地方。对不起,我的意思是5个或更多的数字在一起,不在任何地方。即12345不是123东西45这捕获了“2018-03-10”以及其他东西,我不想要“2018-03-10”因为逗号前没有5个数字。5个数字必须一起并排位于逗号之间的某个位置
data = '2018-03-10, 354687-56987-314, 2018123-02-10-2019, 10-20-20232316'
re.findall(r'[^, ]*\d{5,}[^,]*',data)
Out[847]: ['354687-56987-314', '2018123-02-10-2019', '10-20-20232316']