Python - 正则表达式 - 对错

时间:2018-05-17 22:38:16

标签: python regex

所以我想要的是让我的代码理解我的输入是否有数字,如果它确实是输出“正确”但是如果没有那么它会输出“不正确”怎么能我实际上做了这个工作。所以它知道输入中是否有整数。任何帮助表示赞赏

import re
yourString=input()
number = re.search(r'\d+', yourString).group()
if number == True:
  print("Correct")
else:
  print("Incorrect")

3 个答案:

答案 0 :(得分:2)

您可以使用str.isdigitre.search或内置字符串对floatint等转化进行编号:

def extractNumber(string):
    for word in string.split():
        try:
            # The float() function accepts a decimal string.
            # The int() function accepts an integer string.
            return float(word)
        except ValueError:
            pass

number = extractNumber(input())

if number is not None:
    print('Your number is: {}'.format(number))
else:
    print('No number found')

答案 1 :(得分:2)

根据https://docs.python.org/3/library/re.html#match-objects,你有一点微妙的错误。

声明不应该if number == True:它应该是if number:,原因是如果匹配任何内容,则值为True,如果有,则为None没有比赛。

import re
yourString=input()
number = re.search(r'\d+', yourString)
if number:
    print("Correct")
    group = number.group()
else:
    print("Incorrect")

注意,有些奇怪

import re
yourString=input()
number = re.search(r'\d+', yourString)
if number:
    print(number == True)
    group = number.group()
else:
    print("Incorrect")

打印为false,因此number不是值true,它会覆盖__bool__。有关详细信息,请参阅https://docs.python.org/3/reference/datamodel.html#object.bool

答案 2 :(得分:0)

您正在寻找的正则表达式是:\w*[0-9]+\w*。它接受包含至少一位数的任何内容。

\w*[a-zA-Z0-9_]*相同,这意味着它将匹配任何大写/小写字母,数字或_。它可以在字符串

中出现0到多次

[0-9]+匹配0到9之间的一对多数字。

实际上,如果您的目的只是检查字符串是否有数字,那么您最好只使用[0-9]+,这与您最初发布的内容相同。

您可以尝试使用此网站regex101.com

创建正则表达式