如何匹配一个字符?

时间:2012-10-01 13:37:53

标签: python regex

如何仅匹配字符长度为1的单词?或者在执行匹配操作后是否必须检查匹配的长度?我的过滤器如下所示:

sw = r'\w+,\s+([A-Za-z]){1}

所以它应匹配

rs =re.match(sw,'Herb, A')

但不应该匹配

rs =re.match(sw,'Herb, Abc')

2 个答案:

答案 0 :(得分:2)

如果您使用\b\w\b,则只会匹配一个字词类型的字符。所以你的表达将是

sw = r'\w+,\s+\w\b'

(因为\w前面至少有一个\s,您不需要第一个\b

验证

>>> sw = r'\w+,\s+\w\b'
>>> print re.match(sw,'Herb, A')
<_sre.SRE_Match object at 0xb7242058>
>>> print re.match(sw,'Herb, Abc')
None

答案 1 :(得分:1)

您可以使用

(?<=\s|^)\p{L}(?=[\s,.!?]|$)

将匹配由空格字符或字符串结尾开头和后跟的单个字母。前瞻性也略微增加了标点符号......这一切都取决于你的输入数据。你也可以对非字母进行预测,但这引出了一个问题,“a123”是否真的是一个单字母的单词。或者“我是”。