Python正则表达式:禁止带异常的字符

亨利·梅特纳

在我的实际项目中,我想从用户那里得到一些输入。它不能在开头,结尾或连续两次或多次包含空格,也不能包含任何非字母或数字的空格。

但是我有两个问题:

  1. \W禁止使用空格。我想允许一个,但不允许一开始,结束或多次。
  2. 我想允许点,但\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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python正则表达式:禁止带异常的字符

来自分类Dev

字符串的正则表达式,带异常

来自分类Dev

正则表达式允许带空格的字母数字并禁止某些特殊字符(<>&;)

来自分类Dev

正则表达式允许和禁止字符

来自分类Dev

正则表达式禁止某些特殊字符

来自分类Dev

正则表达式允许和禁止特定字符

来自分类Dev

Java字符串带正则表达式

来自分类Dev

正则表达式-带连字符的字母

来自分类Dev

带正则表达式的grep包含管道字符

来自分类Dev

正则表达式禁止逗号

来自分类Dev

带正则表达式的Python分块

来自分类Dev

带python请求模块的多行正则表达式

来自分类Dev

带正则表达式的MaskFormatter

来自分类Dev

带条件的正则表达式

来自分类Dev

带if条件的正则表达式

来自分类Dev

带grep的正则表达式

来自分类Dev

带条件的正则表达式

来自分类Dev

带正则表达式的grep

来自分类Dev

带计数的正则表达式

来自分类Dev

正则表达式在python中引发异常

来自分类Dev

Python正则表达式搜索功能异常行为

来自分类Dev

正则表达式的异常日志

来自分类Dev

正则表达式表现异常

来自分类Dev

Python正则表达式-拆分字母数字字符,但删除并合并带连字符的单词

来自分类Dev

Python正则表达式-拆分字母数字字符,但删除并合并带连字符的单词

来自分类Dev

正则表达式匹配带特殊字符或不带重音字符的字符串?

来自分类Dev

Python正则表达式字符串扩展

来自分类Dev

正则表达式python压缩字符串

来自分类Dev

带有特殊字符的Python正则表达式