1. ホーム
  2. regex

[解決済み] 正規表現[^ΘdΘs]と[ΘdΘs]の違いは何ですか?

2022-03-03 15:33:38

質問

の違いについて、どなたか教えてください。 [^\d\s][\D\S] ?

の説明文は http://www.regular-expressions.info/shorthand.html がよくわからない。

角括弧の中で否定された短縮形を使用する場合は、注意が必要です。 [\D\S] とは異なります。 [^\d\s] . 後者はあらゆる は,数字でも空白でもない文字です。これは x しかし ではなく 8 . しかし、前者では、以下の文字以外のすべての文字にマッチします。 数字でもなく、空白でもない。すべての数字はホワイトスペースではないので で、空白文字はすべて数字ではありません。 [\D\S] はあらゆる 文字、空白、またはそれ以外の文字です。

私の場合、同じようです。それとも、私は何かを見逃しているのでしょうか?

解決方法は?

[^\d\s]

は、数字や空白でない一文字にマッチします。

[\D\S]

は、数字でない、あるいは空白でない1文字にマッチします。

すべての文字は数字でもなければ空白でもないので、2番目の正規表現はあらゆる文字にマッチします。

という違いに相当する。

if (!(isdigit(c) || isspace(c))) ...

そして

if (!isdigit(c) || !isspace(c)) ...

なお、以下は最初のものと同等になる(ド・モルガンの法則による)。

if (!isdigit(c) && !isspace(c)) ...