我想检查字符串是否符合我输入的格式,例如:
我要从字符串列表中提取具有以下格式的字符串:
***.***.***
其中*都是数字。
我搜索了正则表达式,但对它的理解不够充分。
答案 0 :(得分:2)
这绝对是正则表达式的工作。该模式的简单正则表达式可能是
\d\d\d\.\d\d\d\.\d\d\d
“ \ d”代表任何数字,“ \”代表。是转义的转义字符(因为“。”是正则表达式中的特殊符号。)使用python re库可能会使用具有该模式的findall方法,
list_of_matches = re.findall("\d\d\d\.\d\d\d\.\d\d\d", my_string)
答案 1 :(得分:1)
我们可以尝试通过以下模式使用re.findall
:
\b\d{3}\.\d{3}\.\d{3}\b
示例代码:
input = "here some number 123.456.789 for testing"
matches = re.findall(r'\b\d{3}\.\d{3}\.\d{3}\b', input)
print(matches)
['123.456.789']
在这里使用re.findall
是一个不错的选择,因为这还意味着您可以在输入字符串中捕获多个匹配项。
答案 2 :(得分:0)
这应该可以解决问题。正则表达式字符串为^[0-9]+\.[0-9]+\.[0-9]+$
,我将每个数字精确地匹配3次,并检查是否为'。'。分隔符在中间。 ^和$表示字符串的开头和结尾
>>> import re
>>> re.match('^[0-9]{3}\.[0-9]{3}\.[0-9]{3}$','111.222.333')
<_sre.SRE_Match object at 0x10f98cb28>
>>> re.match('^[0-9]+\.[0-9]+\.[0-9]+$','a11.22.33b')
>>> re.match('^[0-9]+\.[0-9]+\.[0-9]+$','1a1.22.3b3')
>>> re.match('^[0-9]+\.[0-9]+\.[0-9]+$','11.2a2.33')