只允许浮点数,带一个小数点和一个负号(Python/Kivy/Regex)
首先,我想说我对这门语言非常陌生,但我已经在我的计算器应用程序中深入了解了简单的物理方程。我的计划是先用另一个计算屏幕制作一个主屏幕,一旦我能做到最好,我将继续使用其他屏幕 在这个特定的屏幕上(可能还有我必须使用这个函数的大多数其他屏幕),我建立了一个自定义文本输入,只允许数字0-9和一个小数点。然而,我目前正在绞尽脑汁,试图弄清楚如何在我允许的输入集中包含否定符号 代码如下:(我发现它是开源的,我理解它的逻辑,但我还没有完全理解re.compile函数)只允许浮点数,带一个小数点和一个负号(Python/Kivy/Regex),python,regex,filter,compilation,textinput,Python,Regex,Filter,Compilation,Textinput,首先,我想说我对这门语言非常陌生,但我已经在我的计算器应用程序中深入了解了简单的物理方程。我的计划是先用另一个计算屏幕制作一个主屏幕,一旦我能做到最好,我将继续使用其他屏幕 在这个特定的屏幕上(可能还有我必须使用这个函数的大多数其他屏幕),我建立了一个自定义文本输入,只允许数字0-9和一个小数点。然而,我目前正在绞尽脑汁,试图弄清楚如何在我允许的输入集中包含否定符号 代码如下:(我发现它是开源的,我理解它的逻辑,但我还没有完全理解re.compile函数) 类浮动输入(TextInput): p
类浮动输入(TextInput):
pat=re.compile(“[^0-9]”)从:
如果-
被转义(例如[a \-z]
),或者如果它被放置为第一个或最后一个字符(例如[-a]
或[a-]
),它将匹配一个文本'-'
要获得与0-9,-或+以外的任何内容匹配的模式,可以使用
pat=re.compile(“[^0-9\-+]”)
> p>而不是从字符串中替换无关字符,您想考虑用户是否以正确的格式输入数字?
如果是,请尝试使用re.match和probe user输入正确的格式,直到正确为止
请尝试此代码以符合您对-ve浮点数的要求
re.match('^-{0,1}[0-9]*(.[0-9]+){0,1}$', '-1.1000008')
我尝试了几个反面的例子并进行了测试。如果缺少任何内容,请随时修改
关于这个正则表达式字符串的一些信息
^ -> starts with
$ -> ends with
{0,1} -> 0 - 1 occurrence only
* -> Zero or more times
+ -> One or more times
() -> group
您也可以将此字符串放入re.compile。
重新匹配输出匹配(如果有),否则无
干杯,您好,这只是一个后续问题,您能否声明只允许使用一个负号(在re.compile中)?还是我必须改变我的全部代码?此外,re.match似乎对我不起作用-就代码而言,我可能需要修改它,而不仅仅是坚持现有的。嗨,Gleb,前面的代码只处理一个负号(零或一)。您可能需要检查是否存在匹配,然后继续计算,否则,请用户添加正确的数字。您可以将匹配字符串放入re.compile()中。请正确格式化代码。您不必尖叫
^ -> starts with
$ -> ends with
{0,1} -> 0 - 1 occurrence only
* -> Zero or more times
+ -> One or more times
() -> group