有没有办法检查字符串中的每个字符是否都符合设置的 RE 条件?

Is there a way to check if every character in a string conforms to the set RE conditions?

这两天我一直在重新学习python,并决定第一次使用正则表达式[这里简称为RE](结合tkinter),它非常棒令人困惑。

我正在尝试检查字符串中的每个字符都是数字还是句点,但事实证明这对我来说很难理解。

代码如下:

def matchFloat(string, search=re.compile(r'[0-9.]').search):
    return bool(search(string))

def matchInt(string, search=re.compile(r'[0-9]').search):
    return bool(search(string))

def callbackFloat(P):
    if matchFloat(P) or P == "":
        return True
    else:
        return False

def callbackInt(P):
    if matchInt(P) or P == "":
        return True
    else:
        return False

输入到我的输入框中的第一个字符 [见下文] 被强制为数字或 。 (在 Floats 的情况下),然而 RE search() 只需要 1 个字符满足它 return True 的条件。 所以简而言之,如果字符串中的每个字符都符合设置的 RE 条件,有没有办法只 return 为真?

感谢任何帮助,在此先感谢您!

图片: As you can see, I'm quite new to this. Disallowed Characters In Box

This thread 可能会有所帮助,因为它涵盖了 tkinter 输入验证的主题。

但是,快速回答您的问题:

search(r"^[0-9]+$", string)

将匹配一个整数字符串。 RE 模式表示“一个或多个数字,从字符串的开头延伸到结尾”。这也可以缩短为 r"^\d+$".

您也可以使用 re.fullmatch() 方法:

fullmatch(r"[0-9]+", string)

为了完整起见,我要指出您不需要自己完成这项工作。您可以使用 string.isdigit()string.isdecimal()string.isnumeric() 方法确定字符串是否表示整数。

至于检查字符串是否为浮点数,Pythonic 的方法是尝试转换为浮点数,如果失败则捕获异常:

try:
    num = float(string)
except:
    print("not a float")