Java 正则表达式是否替换包含特定事件的图像标记?

Java 正则表达式是否替换包含特定事件的图像标记?,java,regex,string,Java,Regex,String,我有下面的消息字符串。我想用新字符串cid替换包含序列(即?custId=1234)出现的所有图像标记: String message = "Need to process image tag <img src=\"http://danny.oz.au/p/56214815-tripod.jpg?custId=1234\"/>"; String message=“需要处理图像标签”; 这是我在阅读了一段regex教程后尝试的,该教程将所有图像标记替换为cid:我不知道如何适应

我有下面的消息字符串。我想用新字符串cid替换包含序列(即?custId=1234)出现的所有图像标记:

 String message = "Need to process  image tag <img src=\"http://danny.oz.au/p/56214815-tripod.jpg?custId=1234\"/>";
String message=“需要处理图像标签”;
这是我在阅读了一段regex教程后尝试的,该教程将所有图像标记替换为cid:我不知道如何适应 在regex中再添加一个过滤器,即?custId=1234,以便仅替换包含?custId=1234的图像标签

  message = message.replaceAll("\\<img.*?>", "cid:");
message=message.replaceAll(“\\”;
输出应为
“需要处理图像标记cid:”

因为输入包含img标签和?custId=1234两者

输入为

  "Need to process  image tag <img src=\"http://danny.oz.au/p/56214815-tripod.jpg?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=1234\"/>";
     "Need to process  image tag <img src=\"http://danny.oz.au/p/56214815-tripod.jpg?custId=1235\"/>";
“需要处理图像标签”;
becoz输入不包含?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=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=1234\"/>"
"Need to process  image tag cid:"

您可以使用ths String Contains函数首先筛选具有“custid=”的字符串

if(message.contains(“custId=1234”){
message=message.replaceAll(“\\”,“cid:”);
}

您可以使用该字符串包含函数首先筛选具有“custid=”的字符串。例如

if(message.contains(“custId=1234”){
message=message.replaceAll(“\\”,“cid:”);
}
我想我抓住你了

“需要处理图像标记。*\?custId=(\d+)”

这里有一个反引用id的正则表达式,然后您可以打印需要处理的cId:match.group(1)或任何您需要的内容。

我想我已经找到您了

“需要处理图像标记。*\?custId=(\d+)”


这里有一个反引用id的正则表达式,然后可以打印需要处理的cId:match.group(1)或者你需要的任何东西。

你能举一个真实的例子吗?我没有理解你,你能举一个真实的例子吗?我没有理解你,如果消息同时包含两个标签-一个带有
custId=1234
的标签和一个没有它的标签,会怎么样?我没有从这个例子中得到这样的印象,即这是可能的,但如果它是我的建议,我肯定会这样做on需要优化,首先将图像标记提取为子字符串,然后仅对该字符串执行custId测试。如果消息同时包含两个标记-一个带有
custId=1234
的标记和一个没有它的标记,会怎么样?我没有从示例中得到这样的印象,即这是可能的,但如果确实是,则我的建议需要优化首先将图像标记提取为子字符串,然后对该字符串执行custId测试。@MSach。您有大量的
HTML
标记,具有大量的属性。使用正则表达式,您无法解析和获取所有标记的信息。此外,不同的标记行为不同,可以以不同的方式使用。因此,您可以应始终使用专门为此目的而设计的工具。使用HTML解析器。@MSach.Regex用于正常的文本处理,而不是用于遵循某种顺序的某些事情。例如,它在处理say
opening
和相应的
closing
方括号时非常弱。
*?
表示匹配所有
磁阻t
用于勉强匹配。这意味着它将在匹配下一个模式之前匹配最小的字符。然后我们需要匹配
。为此,我们需要用反斜杠转义
,因为它有特殊含义。@MSach.您不需要转义
&。只需尝试:-
模式。编译(\\)
@MSach..而且你不需要逃避你的
@MSach。你有一系列的
HTML
标记,它们具有广泛的属性。通过使用正则表达式,你无法解析和获取所有标记的信息。此外,不同的标记行为不同,可以以不同的方式使用。因此,你应该始终使用工具,特别是专用于此目的。使用HTML解析器。@MSach.Regex用于正常的文本处理,而不用于遵循某些顺序的某些事情。例如,它在处理say
打开
和相应的
关闭
括号方面非常弱。
*?
表示匹配所有内容
不情愿
用于不情愿匹配。意味着它将在匹配下一个模式之前匹配最小的字符。然后我们需要匹配
?custId
。为此,我们需要用反斜杠转义
,因为它有特殊含义。@MSach。您不需要转义
。只需尝试:-
模式。编译(\\);
@MSach..你不需要逃避你的