2

テキストエリア内のURLを取得するためのこのコードがあります。を含む URL を試すまで、うまく機能してい'+'ました。

Pattern pattern = Pattern.compile("(.*)(https?[://.0-9-?a-z=_#!A-Z]*)(.*)");
Matcher matcher = pattern.matcher(text);

\\+だから私は自分のコードにandを入れようと\\\\+しましたが、うまくいきませんでした。だから私はいくつかのグーグルを行い、スタックオーバーフローの問題はこの男に言及し続けました

Pattern.quote("+");

ただし、そのステートメントを現在持っているものにどのように実装するかはわかりません。それが私が行きたい方法でもあるなら。しかし、私はこのようなことをする必要があると思います...

String quote = Pattern.quote("+");
Pattern pattern = Pattern.compile("(.*)(https?[://.0-9-?a-z=_#!A-Z]*)(.*)");
Matcher matcher = pattern.matcher(text);

そして、変数 quote をパターンのどこかに追加しますか? 助けてください!今日このことを学んだばかりで、まったくの初心者です!ありがとうございました?

4

2 に答える 2

3

\、例で引用符をエスケープするだけです

Pattern pattern = Pattern.compile("(.*)(https?[://.0-9-?a-z=_#!A-Z\"]*)(.*)");
于 2012-10-17T05:22:17.610 に答える
1
(https?[://.0-9-?a-z=_#!A-Z]*)

[と は文字のクラスを]表し、これはその中の任意の文字が含まれることを意味することに注意してください。[aegl]+は、"age"、"a"、"e"、g"、"eagle"、および "gaggle" に一致します。また、2 回リストされた文字 ( のように/) は完全に冗長であることも意味します。

Pattern.quote は便利ですが、特殊文字の前にバックスラッシュが付いた同じ文字列のみを返します。Pattern.quote("+")戻り\+ます。

は角かっこの間に意味がないため、角かっこ内にエスケープされ+ていない a を入れることができるはずです。+その時点で、\\気分が良くなる場合は追加することもできます.

Pattern pattern = Pattern.compile("(.*)(https?[:/.0-9-?a-z=_#!A-Z+]*)(.*)");
Pattern pattern = Pattern.compile("(.*)(https?[:/.0-9-?a-z=_#!A-Z\\+]*)(.*)");

ここでそれを参照してください: http://fiddle.re/0780

于 2012-10-17T05:34:05.570 に答える