Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 如何检查字符串是否有9位或更多数字?_Python_Regex - Fatal编程技术网

Python 如何检查字符串是否有9位或更多数字?

Python 如何检查字符串是否有9位或更多数字?,python,regex,Python,Regex,我试图检测一个字符串是否有9个或更多的数字。最好的方法是什么 我希望能够在如下字符串中检测电话号码: Call me@(123)123-1234 无论数字在字符串中的位置如何,提取这些数字的最佳方法是什么?因为听起来您只是想检查字符串中是否有9位或更多的数字,所以可以使用该模式 #Import the regular expressions library import re #set our string variable equal to yours above string = 'Call

我试图检测一个字符串是否有9个或更多的数字。最好的方法是什么

我希望能够在如下字符串中检测电话号码:

Call me@(123)123-1234


无论数字在字符串中的位置如何,提取这些数字的最佳方法是什么?

因为听起来您只是想检查字符串中是否有9位或更多的数字,所以可以使用该模式

#Import the regular expressions library
import re
#set our string variable equal to yours above
string = 'Call me @ (123)123-1234'
#create a list using regular expressions, of all digits in the string
a = re.findall("[0-9]",string)
#examine the list to see if its length is 9 digits or more, and print if so
if len(a) >= 9:
  print(a)
^(\D*\d){9}
它从字符串的开头开始,重复由零个或多个非数字字符组成的组,后跟一个数字字符。重复该组9次,您就知道字符串中至少有9位数字

pattern = re.compile(r'^(?:\D*\d){9}')
print(pattern.match('Call me @ (123)123-1234')) 
print(pattern.match('Call me @ (123)123-12'))

因为听起来您只是想检查字符串中是否有9位或更多的数字,所以可以使用该模式

^(\D*\d){9}
它从字符串的开头开始,重复由零个或多个非数字字符组成的组,后跟一个数字字符。重复该组9次,您就知道字符串中至少有9位数字

pattern = re.compile(r'^(?:\D*\d){9}')
print(pattern.match('Call me @ (123)123-1234')) 
print(pattern.match('Call me @ (123)123-12'))
或者不使用正则表达式(对于大字符串,速度较慢):

或部分正则表达式:

print(len(re.findall("[0-9]",my_string))>=9)
只需使用python检查是否有九(9)个或更多数字。

或没有正则表达式(对于大字符串,速度较慢):

或部分正则表达式:

print(len(re.findall("[0-9]",my_string))>=9)

只需使用python检查是否有九(9)位或更多位。

re.findall(“[0-9]”,my_string)
或者
sum(letter.isdigit()表示my_string中的字母)
是否要检查字符串是否有9位或更多位,或者要提取字符串中的所有数字?问题标题和正文有点冲突(还有,你试过什么吗?@CertainPerformance我想检查是否有9位或更多的数字,而不是9位,因为有些人在区号前键入了“1”。所以你想检查,而不是提取,对吗?顺便说一句:我想你实际上是指10位或更多的数字,因为一个电话号码有3+3+4=6。但是我下面的代码有9个,很容易更改。
re.findall(“[0-9]”,my_string)
或者可能是
sum(letter.isdigit()表示my_string中的字母)
要检查字符串是否有9个或更多数字,还是要提取字符串中的所有数字?问题标题和正文有点冲突(还有,你试过什么吗?@CertainPerformance我想检查是否有9位或更多的数字,而不是9位,因为有些人在区号前键入了“1”。所以你想检查,而不是提取,对吗?顺便说一句:我想你实际上是指10位或更多的数字,因为一个电话号码有3+3+4=6。但我下面的代码有9个,很容易更改。要回答“为什么使用正则表达式?”的问题:因为可能会给你一个有数百万位数的大字符串。除非你的编译器是个天才,否则你的解决方案会把它们全部计算出来并耗尽整个字符串。带有
{9}
的正则表达式将在达到九位数后停止。没问题,干杯。我确实同意正则表达式通常被过度使用,因此寻找非正则表达式解决方案是值得称赞的回答“为什么使用正则表达式?”的问题:因为可能会给您一个包含数百万位数的大字符串。除非你的编译器是个天才,否则你的解决方案会把它们全部计算出来并耗尽整个字符串。带有
{9}
的正则表达式将在达到九位数后停止。没问题,干杯。我确实同意正则表达式通常被过度使用,因此寻找非正则表达式解决方案是值得称赞的