C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■99475 / )  Re[2]: 正規表現で文字列の否定
□投稿者/ 匿名希望マン (2回)-(2022/04/15(Fri) 14:01:38)
774RR さん、furu さん、返信ありがとうございました。
自分でも何がしたいのか分からなくなってきました...。
ことの発端は、
https://bynatures.hatenadiary.jp/entry/3317/
を読んで、「正規表現は否定を上手く表せない?」って書いてあったので、
マジかよと思い、とりあえずこのブログに書いてあったことを真似てみただけです。
もちょっと自分でも考えてみます。


No99470 (774RR さん) に返信
> 日本語というか設問があいまいなのでどう答えてよいか
>
>>abを含まない文字列
> a および b を含まない
> a または b を含まない
> ab という文字列を含まない
> どれだろう?
あいまいですみません。
「ab という文字列を含まない」ですかね。

> 否定先読みを使いたくない理由は?
元のネタのブログにxyzの否定まであったので、この方法で増やしていくと、どのくらい複雑になるのか気になったからです。
「業務上、必要に迫られたから」とかじゃなくてすみません...。単なる好奇心です。


No99473 (furu さん) に返信
> ■No99465 (匿名希望マン さん) に返信
>>しかし、実際に動かしてみたところ、期待通りには動きませんでした。
> 文字列全体と比較していないから?
>
> Regex(@"[^a]*|[^a]*a[^b]*")
>   ↓↓↓
> Regex(@"^[^a]*$|^[^a]*a[^b]*$")
なるほど。やってみたらいい線いってました。
上の正規表現だと、文字列が2文字の場合はab以外のすべてにマッチしますが、例えば acb や adb などがマッチしないようです。
acb や adb には ab という文字列は含まれてないので、マッチしてほしいところです。
返信 編集キー/


管理者用

- Child Tree -