gpt4 book ai didi

具有模式和匹配器的 Java 正则表达式

转载 作者:行者123 更新时间:2023-12-01 11:44:38 24 4
gpt4 key购买 nike

我正在使用 Java 中的 Pattern 和 Matcher 类,我正在阅读模板文本,我想替换:

  1. src="scripts/test.js"和 src="scripts/test.js?Id=${Id}"
  2. src="Servlet?Template=scripts/test.js"和 src="Servlet?Id=${Id}&Template=scripts/test.js"

我使用下面的代码来执行案例 2:

//strTemplateText  is the Template's text
Pattern p2 = Pattern.compile("(?i)(src\\s*=\\s*[\"'])(.*?\\?)");
Matcher m2 = p2.matcher(strTemplateText);
strTemplateText = m2.replaceAll("$1$2Id=" + CurrentESSession.getAttributeString("Id", "") + "&");

上面的代码对于情况 2 可以正确工作。但是如何创建一个正则表达式来组合情况 1. 和 2.?

谢谢

最佳答案

您不需要正则表达式。如果将情况 2 更改为

replace Servlet?Template=scripts/test.js with Servlet?Template=scripts/test.js&Id=${Id}

您需要做的就是检查源字符串是否包含 ? 如果没有添加 ?Id=${Id} 否则添加 &Id= ${Id}

毕竟

if (strTemplateText.contains("?") {
strTemplateText += "&Id=${Id}";
}
else {
strTemplateText += "?Id=${Id}";
}

完成工作。

或者更短

strTemplate += strTemplateText.contains("?") ? "&Id=${Id}" : "?Id=${Id}";

关于具有模式和匹配器的 Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29259906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com