我正在为 OS X 上的 Qt4.8 使用 Python 绑定。
- 我想接受任何数字和一些其他字符和空格。
- 字符串可以为空或任意长度。
- 我不想要的是,字符串以空格结尾或以空格结尾。
我的工作示例:'[0-9pqw\+\-\*\#\(\)\.][0-9pqw\+\-\*\# \(\)\.]*'
但是,我不想重复两个块,一个包含空间,一个不包含。我猜应该有更好的方法,使用 [^],但是如何呢?
第二个问题:
- 如果我想限制字符串的总长度,我会怎么做?
谢谢你。
我正在为 OS X 上的 Qt4.8 使用 Python 绑定。
我的工作示例:'[0-9pqw\+\-\*\#\(\)\.][0-9pqw\+\-\*\# \(\)\.]*'
但是,我不想重复两个块,一个包含空间,一个不包含。我猜应该有更好的方法,使用 [^],但是如何呢?
第二个问题:
谢谢你。
您可以在模式的开头和结尾使用否定环视:
^(?![ ])[0-9pqw+*# ().-]*(?<![ ])$
请注意,括号不是必需的,但有助于提高可读性。您的任何逃脱都不是(只要您把 the-
放在最后)。
这不是你想要的吗?
import re
re.match('^[^\W].*[^\W]$', ' aaa ')
(最后一个 arg 是您的测试字符串)。
如果要确保长度小于一定数量,请使用花括号。一个字符已经用于测试包含[^\W]
符号的测试字符串的第一个和最后一个字符。所以在这个例子中,当两边都没有空格并且测试字符串不超过 4 个字符时存在匹配。
re.match('^[^\W].{1,2}[^\W]$', 'aaaa')