これをうまく活用すると、正規表現の苦手な「否定マッチ」のかなりの部分をカバーできます。条件が「部分否定」であれば十分対応可能です。 先の(?<!弱)小会社も、否定後読みによる部分否定マッチです。 参考: 『「先」と「後」はマリオになったつもりで考えよう』もどうぞ。 正規表現は全否定が苦手 よく知られていることですが、「○☓という文字列を含まない行にマッチ」のような投げやりな否定表現は、まともに正規表現で表そうとすると大変なことになってしまいます。 以下はStackoverflowで見つけた事例です。 # "hede"を含まない行にマッチ a =~ /^([^h]*(h([^e]|$)|he([^d]|$)|hed([^e]|$))?)*$/ Rubex: ^([^h]*(h([^e]|$)|he([^d]|$)|hed([^e]|$))?)*$ 正規表現で「〜という文字列を含まない」を表そ