java 正则表达式 反斜杠

whos2002110 2014-08-20 02:41:12
一直不会用正则, 今天又被这个反斜杠转义弄晕了


String a = "RMB1.49\3.00";//这里面带了个'\'


要从中读出RMB 1.49 3.00 这3个数字, 正则我是这么写的:


Pattern pattern = Pattern.compile("(RMB|USD)(\\d+[.]\\d+)(\\\\)(\\d+[.]\\d+)");
Matcher m = pattern.matcher(a);
boolean matched = m.find();
if (matched) {
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));
System.out.println(m.group(4));
}

匹配不到! 不管我第三组用\\\\ 还是\\ 都不能匹配到a里面的那个\

后来我换了个思路, 我先用\ split, 不成功, 再后来a.indexOf("\\") 都打印-1!!
现在我竟想不出如何截取出那三个数据来. RMB是货币类型, 可能是其它(位数不定), 然后截\两边的两个数字.

...全文
250 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
whos2002110 2014-08-20
  • 打赏
  • 举报
回复
引用 10 楼 shixitong 的回复:
[quote=引用 9 楼 whos2002110 的回复:] [quote=引用 8 楼 shixitong 的回复:] [quote=引用 6 楼 whos2002110 的回复:] 不知道唉, 烦人的东西, 我的问题用其它办法解决了
怎么解决的,改字符串了?[/quote] 没有, 这里的两个数字是由其它一些数据计算出来的, 我把他计算公式反推出来了[/quote] 那就没用这个字符串了[/quote] 嗯
shixitong 2014-08-20
  • 打赏
  • 举报
回复
引用 9 楼 whos2002110 的回复:
[quote=引用 8 楼 shixitong 的回复:] [quote=引用 6 楼 whos2002110 的回复:] 不知道唉, 烦人的东西, 我的问题用其它办法解决了
怎么解决的,改字符串了?[/quote] 没有, 这里的两个数字是由其它一些数据计算出来的, 我把他计算公式反推出来了[/quote] 那就没用这个字符串了
whos2002110 2014-08-20
  • 打赏
  • 举报
回复
引用 8 楼 shixitong 的回复:
[quote=引用 6 楼 whos2002110 的回复:] 不知道唉, 烦人的东西, 我的问题用其它办法解决了
怎么解决的,改字符串了?[/quote] 没有, 这里的两个数字是由其它一些数据计算出来的, 我把他计算公式反推出来了
shixitong 2014-08-20
  • 打赏
  • 举报
回复
引用 6 楼 whos2002110 的回复:
不知道唉, 烦人的东西, 我的问题用其它办法解决了
怎么解决的,改字符串了?
shiguowen 2014-08-20
  • 打赏
  • 举报
回复
Java 源代码的字符串字面值中的反斜线被解释为转义符 String str = “RMB1.49\3.00” 中“\3”是将3转义 从文件或数据库中获取的“\”不是字面值也就不会被当作转义符处理
whos2002110 2014-08-20
  • 打赏
  • 举报
回复
不知道唉, 烦人的东西, 我的问题用其它办法解决了
yinan9 2014-08-20
  • 打赏
  • 举报
回复
引用 4 楼 yinan9 的回复:

String a = "RMB1.49\\3.00";
字符串中双斜杠才能正确表示
String a = "RMB1.49\\3.00"; 字符串中使用双斜杠\\,否则会把‘\3’转义成一个字符。 真是字符串中,到底是解析\,还是\3的转义字符呢?
yinan9 2014-08-20
  • 打赏
  • 举报
回复

String a = "RMB1.49\\3.00";
字符串中双斜杠才能正确表示
mrliu0905 2014-08-20
  • 打赏
  • 举报
回复
我也来学习一下,怎么解决读进来反斜杠的问题啊?如果读文件里面的路径,那岂不是全乱套了,变成转义字符了?
whos2002110 2014-08-20
  • 打赏
  • 举报
回复
引用 1 楼 shixitong 的回复:
String a = "RMB1.49\3.00";//这里面带了个'\' 打印一下这个字符串 其实结果和我们想象的并不一样,编译器好像把\3作为一个整体 如果a这个字符串,是楼主自己组装的,最好换个分隔符
是的,这个我debug的时候也看到了, 一直整不好. 这个分隔符换不了, 我解析别人的东西
shixitong 2014-08-20
  • 打赏
  • 举报
回复
String a = "RMB1.49\3.00";//这里面带了个'\'
打印一下这个字符串

其实结果和我们想象的并不一样,编译器好像把\3作为一个整体

如果a这个字符串,是楼主自己组装的,最好换个分隔符

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧