[英]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)
,等效於此標志。
還可以通過嵌入式標志表達式(?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.