使用正则表达式匹配5 num,dot,1 num,dot,5 num

时间:2016-09-28 21:00:18

标签: python regex python-2.7

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

00000.1.17372

即:5 Numbers DOT 1 Number DOT 5 Numbers

我尝试过以下re.match:

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

您想要的模式是:

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

您需要转义点并使用正确的标记来表示\d