正则表达式从字符串中查找特定的模式字符串

时间:2017-04-06 02:16:25

标签: java regex

如何从以下字符串中获取ricCode:.ABC。 我的匹配器是

Matcher matcher = Pattern.compile("ricCode:([A-Za-z]+),$").matcher(str);

String str = "{AMX:{ricCode:.ABC,indexDetailEnable:true,price:20,648.15,netChange:<spanclass="md-down">-41.09</span>,percentChange:<spanclass="md-down">-0.20%</span>,tradeDate:17/04/05,tradeTime:16:40,chartDate:17/04/05,chartTime:16:40}";

正则表达式缺少什么?

1 个答案:

答案 0 :(得分:1)

改变你的正则表达式:

ricCode:([A-Za-z]+),$

到此:

ricCode:([A-Za-z.]+)(?=,)

您的原始正则表达式只允许ricCode:后的字母字符,但您的示例中有一个句点.字符。你也匹配了,字符,但这也包括你的匹配中的逗号,你不想要这个 - 所以我为逗号添加了一个positive lookahead,所以它在那里查找它但不匹配它。最后你的正则表达式末尾的$字符与字符串的结尾相匹配,你不想在逗号后立即查找字符串的结尾,所以我删除了它。

使用regexr.com来测试你的表达是有帮助的。