我有不同类型的正则表达式,它们可以出现在字符串中。例如:1. ${n}2. {{coinsAdded}}3. ${coinsAdded}, etc.我必须创建一个模式,以便我可以找到字符串中存在的所有类型的正则表达式。有人可以尝试帮助我。我已经创建了一种模式 -\$\\{[a-zA-Z]*+\\}但这只能满足我对 1 和 3 之类的正则表达式的需求,但对于 2 却失败了。
2 回答
达令说
TA贡献1821条经验 获得超6个赞
我能想到的最简单的 * 正则表达式是:
\\$?(\\{[a-zA-Z]+}|\\{\\{[a-zA-Z]+}})
* 在“最容易理解”的意义上,而不是在“最紧凑”的意义上。
\\$?匹配一个可选的$. 之后,遵循以下\\(之一:
\\{[a-zA-Z]+},即使用一对 的正则表达式{},
|或者,
\\{\\{[a-zA-Z]+}}使用双精度的正则表达式{{}}。
测试:
System.out.println("{n}".matches("\\$?(\\{[a-zA-Z]+}|\\{\\{[a-zA-Z]+}})"));
System.out.println("{{coinsAdded}}".matches("\\$?(\\{[a-zA-Z]+}|\\{\\{[a-zA-Z]+}})"));
System.out.println("${coinsAdded}".matches("\\$?(\\{[a-zA-Z]+}|\\{\\{[a-zA-Z]+}})"));
System.out.println("{{{coinsAdded}}}".matches("\\$?(\\{[a-zA-Z]+}|\\{\\{[a-zA-Z]+}})"));
System.out.println("$${coinsAdded}".matches("\\$?(\\{[a-zA-Z]+}|\\{\\{[a-zA-Z]+}})"));
输出:
真
真真假假
_
_
_
添加回答
举报
0/150
提交
取消