簡體   English   中英

正則表達式替換包含特定事件的圖像標簽?

[英]Regex to replace image tag containing specific occurence?

我下面有消息字符串。 我想用新的字符串cid替換所有包含序列出現的圖像標簽,即?custId = 1234:

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

這是我經過正則表達式教程后嘗試的,它用cid代替了所有圖像標簽的出現: 我沒有如何適應正則表達式中的另一個過濾器,即?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都

嘗試這個: -

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 Parser ,您應該使用它來解析HTML。 正則表達式不是解析HTML的好主意。 您只能解析有限范圍的標簽。

您也可以使用HTML Cleaner


更新:-

如果您還希望dot (.)newline匹配,則可以使用PAttern.DOTALL標志。 或者,在String.replaceAll()情況下,可以在模式的開頭添加一個(?s) ,等效於此標志。

Pattern.DOTALL -JavaDoc :-

還可以通過嵌入式標志表達式(?s)啟用Dotall模式。 (s是“單行”模式的助記符,在Perl中被稱為。)

因此,您可以像這樣修改模式:-

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

您可以使用Strings Contains函數來首先過濾具有“ custid =“的內容。 例如

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

我想我有你演示

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

在這里,您有一個正則表達式可以對您的ID進行反向引用,然后可以打印Need to proced cId:match.group(1)或所需的任何東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM