最初的回答:
我想检查一个字符串是否符合我输入的格式,例如:
从字符串列表中,我想提取符合以下格式的字符串:
***.***.***
*代表所有数字。
我搜索了正则表达式,但无法完全理解并应用它。
最初的回答:
这应该能起作用。正则表达式的字符串为^[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')
\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)
请注意保留HTML标签。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
是一个不错的选择,因为它意味着你可以捕获输入字符串中的多个匹配项。
*.*.*
、**.**.**
、****.****.****
等格式,因此不适合给定的格式。 - jberrio