0

以下にメッセージ文字列があります。シーケンスの出現を含むすべての画像タグ、つまり?custId =1234を新しい文字列cidに置き換えたい:

 String message = "Need to process  image tag <img src=\"http://danny.oz.au/p/56214815-tripod.jpg?custId=1234\"/>";

これは、すべての画像タグの出現をcid:に置き換える正規表現チュートリアルを少し行った後に試したものです。もう1つのフィルター、つまり正規表現に?custId = 1234を適合させて、?custId=1234を含む画像タグのみを置き換える方法がわかりません。

  message = message.replaceAll("\\<img.*?>", "cid:");

編集:-たとえば、入力が

  "Need to process  image tag <img src=\"http://danny.oz.au/p/56214815-tripod.jpg?custId=1234\"/>";

出力は
「画像タグcidを処理する必要があります:」である必要があります。

becoz入力にはimgタグと?custId=1234の両方が含まれています

入力は

     "Need to process  image tag <img src=\"http://danny.oz.au/p/56214815-tripod.jpg?custId=1235\"/>";

出力は

     "Need to process  image tag <img src=\"http://danny.oz.au/p/56214815-tripod.jpg?custId=1235\"/>";

becoz入力には?custId=1234両方が含まれていません

4

3 に答える 3

2

これを試して: -

message = message.replaceAll("<img.*?\\?custId=1234.*?>", "cid:");

指定された入力文字列の場合:-

"Need to process  image tag <img src=\"http://danny.oz.au/p/56214815-tripod.jpg?"
+ "custId=1234\"/>"

これはあなたに与えるでしょう:-

"Need to process  image tag cid:"

入力用:-

"Need to process  image tag <img src=\"http://danny.oz.au/p/56214815-tripod.jpg?custId=1235\"/>"

出力:-

"Need to process  image tag <img src=\"http://danny.oz.au/p/56214815-tripod.jpg?custId=1235\"/>"

また、Jsoup - Java HTML ParserHTMLの解析に使用する必要があるを確認することをお勧めします。正規表現はHTMLを解析するのに良い考えではありません。限られた範囲のタグのみを解析できます。

使用することもできますHTML Cleaner


アップデート: -

dot (.)自分も一致させたい場合は、フラグnewlineを使用できます。PAttern.DOTALLまたは、の場合、パターンの先頭にString.replaceAll()aを追加できます(?s)。これは、このフラグと同等です。

Pattern.DOTALL-JavaDocから:-

ドットオールモードは、埋め込みフラグ式(?s)を介して有効にすることもできます。(sは、Perlで呼ばれる「単一行」モードのニーモニックです。)

したがって、次のようにパターンを変更できます。-

message = message.replaceAll("(?s)<img.*?\\?custId=1234.*?>", "cid:");
于 2012-10-26T11:00:21.123 に答える
2

このStringContains関数を使用して、「custid=」を持つものを最初にフィルタリングできます。例えば

if (message.contains("custId=1234") {
    message = message.replaceAll("\\<img.*?>", "cid:");
}
于 2012-10-26T11:01:54.063 に答える
0

私はあなたにデモを持っていると思います

"Need to process image tag.*\?custId=(\d+)"

ここに、IDを逆参照する正規表現があります。次に、Need to procces the cId:match.group(1)または必要なものを出力できます。

于 2012-10-26T11:15:22.240 に答える