检查字符串是否符合特定格式

3
最初的回答:

我想检查一个字符串是否符合我输入的格式,例如:

从字符串列表中,我想提取符合以下格式的字符串:

***.***.*** 

*代表所有数字。

我搜索了正则表达式,但无法完全理解并应用它。

最初的回答:

3个回答

3

这应该能起作用。正则表达式的字符串为^[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')

它还将匹配*.*.***.**.******.****.****等格式,因此不适合给定的格式。 - jberrio
1
Edited accordingly - Devesh Kumar Singh

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) 请注意保留HTML标签。

2
我们可以尝试使用以下模式的 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是一个不错的选择,因为它意味着你可以捕获输入字符串中的多个匹配项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接