Java 正则表达式是否替换包含特定事件的图像标记?
我有下面的消息字符串。我想用新字符串cid替换包含序列(即?custId=1234)出现的所有图像标记: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:我不知道如何适应
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用于正常的文本处理,而不是用于遵循某种顺序的某些事情。例如,它在处理sayopening
和相应的closing
方括号时非常弱。*?
表示匹配所有磁阻t
?
用于勉强匹配。这意味着它将在匹配下一个模式之前匹配最小的字符。然后我们需要匹配
的?
。为此,我们需要用反斜杠转义?
,因为它有特殊含义。@MSach.您不需要转义&代码>。只需尝试:-模式。编译(\\)
@MSach..而且你不需要逃避你的@MSach。你有一系列的HTML
标记,它们具有广泛的属性。通过使用正则表达式,你无法解析和获取所有标记的信息。此外,不同的标记行为不同,可以以不同的方式使用。因此,你应该始终使用工具,特别是专用于此目的。使用HTML解析器。@MSach.Regex用于正常的文本处理,而不用于遵循某些顺序的某些事情。例如,它在处理say打开
和相应的关闭
括号方面非常弱。*?
表示匹配所有内容不情愿
?
用于不情愿匹配。意味着它将在匹配下一个模式之前匹配最小的字符。然后我们需要匹配?custId
的?
。为此,我们需要用反斜杠转义?
,因为它有特殊含义。@MSach。您不需要转义,
。只需尝试:-模式。编译(\\);
@MSach..你不需要逃避你的