也許一個愚蠢的問題,但雖然谷歌返回了很多類似的情況下,我無法找到確切的情況:什麼正則表達式將匹配所有字符串不包含特定的字符串。例如,我想匹配任何不包含'foo_'的字符串。 現在,Python re:否定正則表達式的一部分
re.match('(?<!foo_).*', 'foo_bar')
返回一個匹配項。雖然
re.match('(?<!foo_)bar', 'foo_bar')
沒有。 我嘗試了非貪婪版本:
re.match('(?<!foo_).*?', 'foo_bar')
仍然返回匹配。 如果我以後添加更多字符),
re.search('(?<!foo_)b.*', 'foo_bar')
返回None,但如果目標字符串有更多的尾隨字符:
re.search('(?<!foo_)b.*', 'foo_barbaric')
它返回匹配。 我故意排除了最初的。*或。*?在那裏。但同樣的事情發生在那。
任何想法爲什麼這種奇怪的行爲? (我需要這個作爲單個正則表達式 - 作爲用戶輸入輸入)。
謝謝,我曾試圖用。*(?!foo _)。*展望未來。在「?!」之後錯過了「。*」 。 – subhacom