Regex:接受任何地方的空间,但在开始

Regex: Accepting space anywhere but at the beginning

本文关键字:空间 开始 任何地 Regex      更新时间:2023-10-16

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

  • 我想接受任何数字和其他几个字符和空白
  • 字符串可以为空,也可以为任意长度
  • 不希望的是,字符串为空白或以空白结尾

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

然而,我不想重复两个块,一个包含空格,一个不包含空格。我想应该有一个更好的方法,雇用[^],但怎么做呢?

第二个问题:

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

谢谢。

您可以在模式的开始和结束处使用负查找:

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

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

这不是你想要的吗?

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

(其中最后一个arg是测试字符串)。

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

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