Skip to main content
 首页 » 编程设计

python之在 Python 中检查字符串是否有字符

2025年05月04日32yxwkf

我需要能够区分可以包含字母和数字的字符串与可以包含数字、冒号和连字符的字符串之间的区别 .

>>> def checkString(s): 
...   pattern = r'[-:0-9]' 
...   if re.search(pattern,s): 
...     print "Matches pattern." 
...   else: 
...     print "Does not match pattern." 
 
# 3 Numbers seperated by colons. 12, 24 and minus 14 
>>> s1 = "12:24:-14" 
# String containing letters and string containing letters/numbers. 
>>> s2 = "hello" 
>>> s3 = "hello2" 

当我对上述每个字符串运行 checkString 方法时:

>>>checkString(s1) 
Matches Pattern. 
>>>checkString(s2) 
Does not match Pattern. 
>>>checkString(s3) 
Matches Pattern 

s3 是唯一一个不按我的要求做的。我希望能够创建一个允许数字、冒号和连字符的正则表达式,但排除其他所有内容(或仅排除字母字符)。谁能指出我正确的方向?

编辑:

因此,我需要一个可以接受的正则表达式:

229            // number 
187:657        //two numbers 
187:678:-765   // two pos and 1 neg numbers 

并拒绝:

Car          //characters 
Car2         //characters and numbers 

请您参考如下方法:

您需要匹配整个字符串,而不是像现在这样匹配单个字符:

>>> re.search('^[-:0-9]+$', "12:24:-14") 
<_sre.SRE_Match object at 0x01013758> 
>>> re.search('^[-:0-9]+$', "hello") 
>>> re.search('^[-:0-9]+$', "hello2") 

解释正则表达式:

  • 在方括号内(字符类):匹配数字 0 到 9、连字符和冒号,仅匹配一次。
  • + 是一个量词,表示前面的表达式应该尽可能匹配多次,但至少匹配一次。
  • ^ 和 $ 匹配字符串的开头和结尾。对于单行字符串,它们等同于 \A 和 \Z。

通过这种方式,您可以将整个字符串的内容限制为至少一个字符长,并且包含来自字符类的字符的任何排列。您之前所做的是从主题字符串中的字符类中搜索单个字符。这就是为什么 s3 包含匹配的数字。