我正在尝试创建正则表达式以匹配以下模式:
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
答案 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
。