在我的实际项目中,我想从用户那里得到一些输入。它不能在开头,结尾或连续两次或多次包含空格,也不能包含任何非字母或数字的空格。
但是我有两个问题:
\W
禁止使用空格。我想允许一个,但不允许一开始,结束或多次。\W
不允许。我无法替换为它,[^a-zA-Z0-9\s\s.]
因为它不允许我允许的字符如“äöüß”。如何更改代码以禁止以下模式中的所有内容(单个空格和点除外)?input_text = input("input: ")
if re.search(r"(^\s|\s{2,}|\s$|\W)", input_text)
print("invalid input")
您可以使用以下两种之一:
^[^\W_]+(?:[\s.][^\W_]+)*\Z
^(?:[^\W_]|\.)+(?:\s(?:[^\W_]|\.)+)*\Z
第一个仅在字母之间匹配单个点和空格。第二个点允许点位于字符串中的任何位置,并且可以连续任何数量。请参阅regex#1演示和regex#2演示。
细节
^
-字符串开始[^\W_]+
-一个或多个Unicode字母或数字(?:[^\W_]|\.)+
-匹配一个或多个Unicode字母/数字或点的非捕获组(?:[\s.][^\W_]+)*
-零次或多次重复
[\s.]
-单个空格或点[^\W_]+
-一个或多个Unicode字母或数字\Z
-字符串的结尾。在Python中,使用类似
if re.search(r'^[^\W_]+(?:[\s.][^\W_]+)*\Z', input_text):
print('Valid')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句