Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查字符串是否具有特定格式_Python_Regex_String - Fatal编程技术网

Python 检查字符串是否具有特定格式

Python 检查字符串是否具有特定格式,python,regex,string,Python,Regex,String,我想检查字符串是否符合我作为输入提供的格式,例如: 我想从字符串列表中提取具有以下格式的字符串: ***.***.*** 其中*都是数字 我搜索了关于regex的内容,但理解得不够透彻,无法实现它。这应该可以解决问题。正则表达式字符串是^ [09] +\[09] +\[09] +$,其中每个数字正好匹配3次,并检查是否''.'分隔符位于中间。和$表示字符串的开始和结束 >>> import re >>> re.match('^[0-9]{3}\.[0-9]

我想检查字符串是否符合我作为输入提供的格式,例如:

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

***.***.*** 
其中*都是数字


我搜索了关于regex的内容,但理解得不够透彻,无法实现它。

这应该可以解决问题。正则表达式字符串是^ [09] +\[09] +\[09] +$,其中每个数字正好匹配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')

这应该能奏效。正则表达式字符串是^ [09] +\[09] +\[09] +$,其中每个数字正好匹配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')

这绝对是regex的工作。该模式的简单正则表达式可能是

\d\d\d\。\d\d\d\。\d\d\d

\d代表任意数字,\。是转义句点字符,因为。是正则表达式中的一个特殊符号。对于python,re库可能会将findall方法用于该模式


匹配项列表=re.findall\d\d\d\。\d\d\d\。\d\d\d,我的字符串这绝对是正则表达式的工作。该模式的简单正则表达式可能是

\d\d\d\。\d\d\d\。\d\d\d

\d代表任意数字,\。是转义句点字符,因为。是正则表达式中的一个特殊符号。对于python,re库可能会将findall方法用于该模式

匹配项列表=re.findall\d\d\d\。\d\d\d\。\d\d\d,我的\u字符串

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

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

它还将匹配*.*.*、***.*.*、***.***.***.***.***.***.***.*等。因此不适合给定的格式。按此进行编辑后,它还将匹配*.*、***.***.***.***.***.***、***.***.***.***.***,因此不适合给定的格式。请进行相应编辑