1

.リテラルを探すなど、セクション内のいくつかの文字などを検索する単純な正規表現を実行しようとしています。ただし、Patternコンパイラはそれが有効ではないと言っています。

以下は、フォーマット例外をスローする完全な正規表現からの抜粋です。エスケープは正しく見えますが、 をエスケープ.してはならないものと見なすだけです。

([a-zA-Z0-9_-\.\s]{1,})
              ^

私も試し"([a-zA-Z0-9_-\\\\.\\s]{1,})"ました(上記と同じですが、\エスケープするために2つ.)運がありませんでした。

ドット文字をエスケープするためにインターネットで見つけることができるすべてのリソースは、これが機能するはずであると述べています。

私は何が欠けていますか?

4

2 に答える 2

5

問題は中にあるのではなく、.その-前にあります。試す"([a-zA-Z0-9_\\-.\\s]{1,})"

-は文字クラスのメタ文字[...]です。Unicode テーブル内の ~ の間 (両端を含む)の[a-z]文字に一致するような文字の範囲を指定します。文字クラスの開始または終了など、範囲演算子として扱う可能性がない場所で使用すると、通常の文字として扱われるため、その場合はエスケープする必要はありません。それ以外の場合は、単純なリテラルに変更する前に使用する必要があります。az[-...] [...-]\

于 2013-01-08T02:58:46.810 に答える
2

正規表現では、ダッシュ-とドット.は両方ともメタ文字と見なされます。英数字に加えて.andを探す必要がある場合は、またはである必要があります。-[a-zA-Z0-9[\.\-]][a-zA-Z0-9[\Q.-\E]]

于 2013-01-08T03:18:13.367 に答える