【发布时间】:2016-03-25 22:06:36
【问题描述】:
我想编写一个匹配单词hello 的正则表达式,但仅当它开始一行或前面有空格时。如果它在那里,我不想匹配空格......我只需要知道它(或行首)在那里。
所以我试过了:
r = re.compile('hello(?<=\s|^)')
但这会引发:
error: look-behind requires fixed-width pattern
举个例子,如果我要搜索的字符串是:
s = 'hello world hello thello'
然后我希望我的正则表达式匹配两次...在下面大写的位置:
'HELLO world HELLO thello'
第一个匹配是因为它前面是行首,而第二个匹配是因为它前面有一个空格。最后 5 个字符将不匹配,因为它们前面有 t。
【问题讨论】:
-
re.findall(r'\bhello\b', s)怎么样? -
为什么按原样编写它会起作用,但如果在正则表达式字符串之前省略
r,则会失败? -
没有
r,\b被视为退格符号。 -
那么python中的正则表达式应该总是作为原始字符串输入吗?
-
这是最佳实践。