【发布时间】:2019-08-26 18:30:18
【问题描述】:
我正在使用Kivy 使用re(正则表达式)执行类似“语法分析器”的操作。
我只想检查基本操作的有效语法(如 +|-|*|/|(|))。 用户将字符串(使用键盘)录制下来,然后我使用正则表达式对其进行验证。 但我不知道如何在 if 语句中使用正则表达式。我想要的是:如果用户带给我的字符串不正确(或不使用正则表达式检查)打印类似“inavlid string”的内容,如果正确则打印“Valid string”。
我试过了:
if re.match(patron, string) is not None:
print ("\nTrue")
else:
print("False")
但是,string 有什么并不重要,应用程序总是显示True。
对不起,我糟糕的英语。任何帮助将不胜感激!
import re
patron= re.compile(r"""
(
-?\d+[.\d+]?
[+*-/]
-?\d+[.\d+]?
[+|-|*|/]?
)*
""", re.X)
obj1= self.ids['text'].text #TextInput
if re.match(patron, obj1) is not None:
print ("\nValid String")
else:
print("Inavlid string")
if obj1= "53.22+22.11+10*555+62+55.2-66" 实际上是正确的,并且应用程序会打印“有效...”,但是如果我像这样 "a53.22+22.11+10*555+62+55.2-66" 放置a,则它是不正确的,应用程序必须打印invalid..,但它仍然是valid。
【问题讨论】:
-
kivy标签在这种情况下是无关紧要的,你正在验证一个字符串,而kivy字符串是本机python字符串。
-
嗨,欢迎来到 StackOverflow。感谢一个包含Minimal, Complete, and Verifiable example的写得很好的问题。