有没有办法检查字符串中的每个字符是否都符合设置的 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")
这两天我一直在重新学习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")