为 ${n} 类型和 {{coinsadded}} 类型的变量创建单一模式,以便可以在字符串中找到它

我有不同类型的正则表达式,它们可以出现在字符串中。例如:


1. ${n}

2. {{coinsAdded}}

3. ${coinsAdded}, etc.

我必须创建一个模式,以便我可以找到字符串中存在的所有类型的正则表达式。有人可以尝试帮助我。


我已经创建了一种模式 -


\$\\{[a-zA-Z]*+\\}

但这只能满足我对 1 和 3 之类的正则表达式的需求,但对于 2 却失败了。


30秒到达战场
浏览 116回答 2
2回答

红颜莎娜

更新感谢@Spara 指出丢失(?:\${)[a-zA-Z]+(?:})|(?:\${{)[a-zA-Z]+(?:}})|(?:{{)[a-zA-Z]+(?:}})演示你可以试试这个\$?{{?[a-zA-Z]*}}?解释\$?- 将匹配$(?使其可选)。{{?- 将匹配{或{{。[a-zA-Z]*- 将匹配从 a 到 z 零次或更多次的任何字符。}}?- 将匹配}或}}。演示

达令说

我能想到的最简单的 * 正则表达式是:\\$?(\\{[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]+}})"));输出:真真真假假___
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java