正则表达式:在任何地方接受空间,但在开始时

时间:2013-08-15 15:06:52

标签: c++ python regex qt regex-negation

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

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

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

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

第二个问题:

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

谢谢。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

这不符合您的要求吗?

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

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

如果您想确保长度小于一定数量,请使用花括号。一个字符已用于测试测试字符串的第一个和最后一个字符,并包含[^\W]表示法。因此,在此示例中,当两侧没有空格且测试字符串不超过4个字符时,存在匹配。

re.match('^[^\W].{1,2}[^\W]$', 'aaaa')