使用regex匹配5 num,dot,1 num,dot,5 num

2024-10-03 13:24:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建正则表达式以匹配以下模式:

00000.1.17372

例如:5 Numbers DOT 1 Number DOT 5 Numbers

我尝试了以下重新匹配:

find = re.match('d{5}.d{1}.d{5}', string)

在上下文中:

import re

string = "{u'blabla': u'asdf', u'dd': u'a', u'cotry': u'jjK', u'l': u'/q/iii:00000.1.17372', u'stfe': u'', u'fdfhdiufhi': u'GB', u'y_name': u'Unitm', u'mw': u'00000.1.17372'}"

find = re.match('d{5}.d{1}.d{5}', string)

print find

但是,这似乎不起作用,因为输出是:

None

Tags: importrenumberstringmatch模式finddot
2条回答

re.findall一起使用以下命令:

r'\b\d{5}\.\d\.\d{5}\b'

参见regex demo

关键是:

  • 要匹配数字,需要使用\d
  • 点必须转义才能与文字点匹配
  • 要匹配整个单词,您需要使用\b单词边界,否则您将在2234567654类字符串中找到匹配的5位数块
  • re.findall将返回所有非重叠匹配的列表(因为此模式中没有捕获组)

Python代码示例:

import re
regex = r"\b\d{5}\.\d\.\d{5}\b"
test_str = "{u'blabla': u'asdf', u'dd': u'a', u'cotry': u'jjK', u'l': u'/q/iii:00000.1.17372', u'stfe': u'', u'fdfhdiufhi': u'GB', u'y_name': u'Unitm', u'mw': u'00000.1.17372'}"
matches = re.findall(regex, test_str)
print(matches)

您想要的模式是:

\d{5}\.\d\.\d{5}

您需要对点进行转义,并对数字使用适当的标记,即\d

相关问题 更多 >