假设我需要在字符串中找到单词“ 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())

09-13 12:31