gpt4 book ai didi

java - 用于获取匹配项或替换子字符串的正则表达式

转载 作者:行者123 更新时间:2023-11-30 02:40:02 25 4
gpt4 key购买 nike

我需要匹配或替换字符串的一部分,如下所示,但我无法在 java 中编写准确的正则表达式。

字符串:

text1${text2${text3}text4}text5

预期的正则表达式应该单独匹配 test3,即。 “内部”${} 内的任何内容。上面的示例有一个外部 ${...} 和一个内部 ${...},例如 ...${...${...}...}.... 并且 test3 位于“内部 ${} 这就是我想要的。

以下正则表达式捕获 ${...} 内的全部内容,而不仅仅是“内部”${...} 的内容

\$\{(.*?)\}

更多示例:

text1${text2${text3}text4}text5 - match "text3"
text1text2${text3}text4text5 - should not match anything
text1${text2${text3}text4text5 - should not match anything

更新:

text1${text2${text3}${text4}text5} - match "text3" and "text4"

最佳答案

. 匹配 {}。您需要排除匹配的 {}:

\$\{([^{}]*)}
^^^^^

请参阅regex demo[^{}]*negated character class匹配 0+ 个除 {} 之外的字符。

Java code :

String str = "text1${text2${text3}text4}text5";
Pattern p = Pattern.compile("\\$\\{([^{}]*)}");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
// => text3

关于java - 用于获取匹配项或替换子字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42034960/

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