0

我正在为 OS X 上的 Qt4.8 使用 Python 绑定。

  • 我想接受任何数字和一些其他字符和空格。
  • 字符串可以为空或任意长度。
  • 不想要的是,字符串以空格结尾或以空格结尾。

我的工作示例:'[0-9pqw\+\-\*\#\(\)\.][0-9pqw\+\-\*\# \(\)\.]*'

但是,我不想重复两个块,一个包含空间,一个不包含。我猜应该有更好的方法,使用 [^],但是如何呢?

第二个问题:

  • 如果我想限制字符串的总长度,我会怎么做?

谢谢你。

4

2 回答 2

2

您可以在模式的开头和结尾使用否定环视:

^(?![ ])[0-9pqw+*# ().-]*(?<![ ])$

请注意,括号不是必需的,但有助于提高可读性。您的任何逃脱都不是(只要您把 the-放在最后)。

于 2013-08-15T15:10:44.663 回答
0

这不是你想要的吗?

import re 
re.match('^[^\W].*[^\W]$', '  aaa ')

(最后一个 arg 是您的测试字符串)。

如果要确保长度小于一定数量,请使用花括号。一个字符已经用于测试包含[^\W]符号的测试字符串的第一个和最后一个字符。所以在这个例子中,当两边都没有空格并且测试字符串不超过 4 个字符时存在匹配。

re.match('^[^\W].{1,2}[^\W]$', 'aaaa')
于 2013-08-15T15:09:29.627 回答