「特定の文字列を含まない文字列」という正規表現
「特定の文字(たとえばh)を含まない文字列」という正規表現なら
[^h]*
でいいのですが、「特定の文字列(たとえばhoge)を含まない文字列」という正規表現はどう書けばいいかな? しばらく考えてこんなのを作ってみました。
(?:[^h]|h(?!oge))*
とりあえず「<で始まり>で終わるhogeを含まない文字列」を抽出してみました。
>>> re.findall("<(?:[^h]|h(?!oge))*?>", "<><asdhoge><hogggge><hoge><oge><hogeee>")
['<>', '<hogggge>', '<oge>']