本文介绍了正则表达式python条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
限时送ChatGPT账号..我用 tkinter 编写了一个应用程序.现在我想在用户使用它时在输入框中添加条件/模式.我想强制用户使用这些模式:
I coded an app with tkinter. Now I want to add conditions/pattern in a entry box when the user use it. I want to force the user to use these pattern:
The entry must begin by this pattern `^#\d+\s[A-I]\d+(,|;|-|)`
if there is a `,` or `-` in the string, the pattern must be the same plus `[A-I]\d+`
If there is `;` in the string, redo the first pattern
if after `^#\d+\s[A-I]\d+(,|;|-|)` there is nothing, do nothing
I used regex conditions but nothing happened.
I use this `^#\d+\s[A-I]\d+(,|;|-|)(?:(?=,)[A-I]\d+)`
我用这个程序来检查我的正则表达式
I use this program to check my regex expression
user = input("Please enter user : ")
while not re.match(r"#\d+\s[A-Z]\d+(?:[,-][A-Z]\d+)*(?:;#\d+\s[A-Z]\d+(?:[,-][A-Z]\d+)*)*", user):
print ("Error! ")
user = input("user : ")
print("user "+ user)
推荐答案
注意[AI]
与Q7
中的Q
不匹配.您可以使用 [A-Z]
扩展范围并为第一个和第二个模式使用重复组.
Note that [A-I]
does not match the Q
in Q7
. You can use [A-Z]
to extend the range and use a repeating group for the first and the second pattern.
你可能会使用
#\d+\s[A-Z]\d+(?:[,-][A-Z]\d+)*(?:;#\d+\s[A-Z]\d+(?:[,-][A-Z]\d+)*)*
模式匹配:
#\d+\s[A-Z]\d+
匹配 #
1+ 个数字,一个空格字符和 1+ 个数字(?:[,-][AZ]\d+)*
可选择重复匹配 ,
或 -
字符 AZ 和 1+ 位数字(?:
非捕获组;#\d+\s[A-Z]\d+
匹配 ;
和第一个模式(?:[,-][A-Z]\d+)*
可选择重复匹配第二个模式
#\d+\s[A-Z]\d+
Match #
1+ digits, a whitespace char and 1+ digits
(?:[,-][A-Z]\d+)*
Optionally repeat matching ,
or -
char A-Z and 1+ digits
(?:
Non capture group
;#\d+\s[A-Z]\d+
Match ;
and the first pattern
(?:[,-][A-Z]\d+)*
Optionally repeat matching the second pattern
正则表达式演示
或者如果您还想允许空格:
Or if you want to allow spaces as well:
#\d+\s[A-Z]\d+(?:[,-]\s?[A-Z]\d+)*(?:;#\d+\s[A-Z]\d+(?:[,-]\s?[A-Z]\d+)*)*
正则表达式演示
这篇关于正则表达式python条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
更多推荐
[db:关键词]
发布评论