次の基準に一致する正規表現をどのように作成しますか?
文字列で
文字クラス[^]内のキャレットは、ほとんどの正規表現の実装(Perl、.NET、Ruby、Javascriptなど)に共通の否定演算子です。だから私はこのようにします:
[^\W\s\d]
または、必要なものだけを含めるだけで、別のアプローチを取ることができます。
[A-Za-z]
ここでの主な違いは、最初のものにはアンダースコアが含まれることです。それは、あなたが考えているのと同じ用語で表現を書く方法を示しています。ただし、逆にすると、文字を除外するのではなく含めることを考えている場合は、正規表現が読みやすくなることがあります。
あなたがどの特殊文字を使いたくないのかは完全にはわからない。しかし、一方が他方よりもうまく機能する場合のために、両方のソリューションを書きました。
Perlでは、次のようになります。
$string !~ /[\d \W]/
もちろん、それは「特殊文字」の定義に依存します。 \W
は、Word以外のすべての文字に一致します。 Word文字は、英数字とスペース文字です。
正規表現について学ぶ最も重要なことは、構文ではなく、探しているものを明確に説明する能力です。それは本当に問題の90%です。
また、通常は、望んでいないものよりも望んでいるものを述べる方が良いでしょう。
^ [^ 0-9\p {P}] $を試してください