【发布时间】:2020-03-09 11:16:50
【问题描述】:
我有一个字符串:
2 + 2 = ${2 + 2}
This is a ${"string"}
This is an object: ${JSON.stringify({a: "B"})}
This should be "<something>": ${{
abc: "def",
cba: {
arr: [
"<something>"
]
}
}.cba.arr[0]}
This should ${"${also work}"}
解析后我应该得到类似的东西:
2 + 2 = 4
This is a string
This is an object: {"a":"B"}
This should be "<something>": <something>
This should ${also work}
所以我需要帮助实现它用Java,我只需要得到${ 和} 之间的内容。
我尝试使用正则表达式:\${(.+?)},但是当里面的字符串包含}时它会失败
【问题讨论】:
-
正则表达式不是嵌套括号的最佳选择。
-
那你有什么建议?
-
你试过什么?什么没用?你得到了什么?你期待什么?什么不适用于您的代码,它在哪里?
-
其中一种方法是使用递归正则表达式(这也不是很好,但如果你没有太多嵌套结构就可以了)。而且也不确定java正则表达式引擎是否支持递归regex101.com/r/pFEV5j/1
-
是的,在 Java 中不起作用 (
java.util.regex.PatternSyntaxException: Unknown inline modifier near index 18)。此外,当 ${ 和 } 之间有换行符时,您的正则表达式也不起作用