为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

30秒到达战场 2022-03-10 19:25:43
我有不同类型的正则表达式,它们可以出现在字符串中。例如:1. ${n}2. {{coinsAdded}}3. ${coinsAdded}, etc.我必须创建一个模式,以便我可以找到字符串中存在的所有类型的正则表达式。有人可以尝试帮助我。我已经创建了一种模式 -\$\\{[a-zA-Z]*+\\}但这只能满足我对 1 和 3 之类的正则表达式的需求,但对于 2 却失败了。
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

更新感谢@Spara 指出丢失

(?:\${)[a-zA-Z]+(?:})|(?:\${{)[a-zA-Z]+(?:}})|(?:{{)[a-zA-Z]+(?:}})

演示

你可以试试这个

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

解释

  • \$?- 将匹配$?使其可选)。

  • {{?- 将匹配{{{

  • [a-zA-Z]*- 将匹配从 a 到 z 零次或更多次的任何字符。

  • }}?- 将匹配}}}

演示


查看完整回答
反对 回复 2022-03-10
?
达令说

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]+}})"));

输出:


真真假假

_

_

_


查看完整回答
反对 回复 2022-03-10
  • 2 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信