假设我需要在字符串中找到单词“ water”。这个词不能是另一个词的一部分,并且不能以标点符号开头(因此,我假设它只能以“”开头,否则为字符串的开头)。
我需要返回单词的第一个字符“ w”的索引。所以我正在尝试这段代码:
import re
s = re.search(r"(\A| )\bwater\b", "Need water")
return s.start() # This returns the index of the char " " :(
是否可以忽略模式的(\ A |)部分,以便s.start()始终返回char“ w”的索引?还是我认为这是错误的?
最佳答案
您可以使用
(?<!\S)\bwater\b
请参见regex demo
说明:
(?<!\S)
-如果整个单词之前存在非空格字符,则匹配失败的负向查找失败water
-整个词\bwater\b
。这是一个Python demo:
import re
s = re.search(r"(?<!\S)\bwater\b", "Need water")
if s:
print(s.start())