Python正则表达式,用于匹配前面有行开头或空格的模式

时间:2016-03-25 22:06:37

标签: python regex

我想编写一个与单词hello匹配的正则表达式,但只有当它开始一行或前面有空格时。如果它在那里我不想匹配空白......我只需要知道它(或行的起点)就在那里。

所以我试过了:

r = re.compile('hello(?<=\s|^)')

但这会引发:

error: look-behind requires fixed-width pattern

为了举例,如果我要搜索的字符串是:

s = 'hello world hello thello'

然后我希望我的正则表达式匹配两次......在下面的大写位置:

'HELLO world HELLO thello'

第一个匹配,因为它前面是行的开头,而第二个匹配是因为它前面有一个空格。最后5个字符不匹配,因为它们前面有t

1 个答案:

答案 0 :(得分:3)

(?:(?<=\s)|^)hello就是你想要的。外观需要在正则表达的开头;并且它必须具有固定宽度 - \s是1个字符宽,而^是0个字符,因此您无法将它们与|组合。在这种情况下,我们不需要,我们只是替换(?<=\s)^

请注意,这两个仍然匹配 hello oo;如果这是不可接受的,您必须在最后添加\b