我想编写一个与单词hello
匹配的正则表达式,但只有当它开始一行或前面有空格时。如果它在那里我不想匹配空白......我只需要知道它(或行的起点)就在那里。
所以我试过了:
r = re.compile('hello(?<=\s|^)')
但这会引发:
error: look-behind requires fixed-width pattern
为了举例,如果我要搜索的字符串是:
s = 'hello world hello thello'
然后我希望我的正则表达式匹配两次......在下面的大写位置:
'HELLO world HELLO thello'
第一个匹配,因为它前面是行的开头,而第二个匹配是因为它前面有一个空格。最后5个字符不匹配,因为它们前面有t
。
答案 0 :(得分:3)
(?:(?<=\s)|^)hello
就是你想要的。外观需要在正则表达的开头;并且它必须具有固定宽度 - \s
是1个字符宽,而^
是0个字符,因此您无法将它们与|
组合。在这种情况下,我们不需要,我们只是替换(?<=\s)
和^
。
请注意,这两个仍然匹配 hello oo;如果这是不可接受的,您必须在最后添加\b
。