求一正则写法(送分)

LCKKING 2012-02-11 03:13:37
String str = "sdf,s1f\,sddf,123";
String[] arr = str.split("求该处正则");

\,我想用来表示转义,这里的逗号不作为分隔符
也就是,我想得到的结果:
arr[0]=sdf
arr[1]=s1f\,sddf
arr[2]=123

请问这个正则该怎么写?



...全文
214 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈字文 2012-02-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wjkxinxiang 的回复:]
测试通过,这个语法叫做 反向不匹配。
String[] t = str.split("(?<!\\\\),");
[/Quote]

++=

希望LZ以后发帖的时候能够将表述搞的再详细且简洁一点,这样节省大家时间
「已注销」 2012-02-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wjkxinxiang 的回复:]

测试通过,这个语法叫做 反向不匹配。
String[] t = str.split("(?<!\\\\),");
[/Quote]
哎呀,刚引用错了
「已注销」 2012-02-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 aahujunaa 的回复:]

这个不知道好写,不过可以用其他的方法,你先把“\,”替换成其他的字符如“&”,然后再用“,”分解,再遍历,把字符串里有“&”符号替换回来就行了。方法有点麻烦,但理解起来很简单
String str = "sdf,s1f\\,sddf,123";
str = str.replaceAll("\\\\,", "&");
System……
[/Quote]
LS,这个正则我怎么搞不懂,能解释一下么?
还有八楼的,为什么不行呢?
  • 打赏
  • 举报
回复
测试通过,这个语法叫做 反向不匹配。
String[] t = str.split("(?<!\\\\),");
莫欺少年穷 2012-02-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wjkxinxiang 的回复:]
测试通过,这个语法叫做 反向不匹配。
String[] t = str.split("(?<!\\\\),");
[/Quote]
首先,楼主声明的字符串编译都通不过,我是用Eclipse测试的,所以我觉得改成
String str = "sdf,s1f\\,sddf,123";
但是这样就是输入了一个\的
再次说下这位NB的人的这个方法,这个方法split后是4个数据!!不是楼主想要的3个,是:
arr[0]=sdf
arr[1]=s1f\
arr[2]=sddf
arr[3]=123

我也不懂正则表达式多少,所以只要等解释了。。。
programmerxiaocai 2012-02-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wjkxinxiang 的回复:]

测试通过,这个语法叫做 反向不匹配。
String[] t = str.split("(?<!\\\\),");
[/Quote]
订一下
莫欺少年穷 2012-02-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wjkxinxiang 的回复:]
测试通过,这个语法叫做 反向不匹配。
String[] t = str.split("(?<!\\\\),");
[/Quote]

很NB啊!~原来正则表达式还有这么个语法、测试下去
aahujunaa 2012-02-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hc21314 的回复:]
引用 9 楼 aahujunaa 的回复:

这个不知道好写,不过可以用其他的方法,你先把“\,”替换成其他的字符如“&amp;”,然后再用“,”分解,再遍历,把字符串里有“&amp;”符号替换回来就行了。方法有点麻烦,但理解起来很简单
String str = "sdf,s1f\\,sddf,123";
str = str.replaceAll("\\\\,", "&am……
[/Quote]两个\\是一个代表一个\,不用多说,\\\\就代表两个,非java下,"\\\\,"这种的写法就是"\\,",在java下有一个通配符,所以代表"\,"
aahujunaa 2012-02-15
  • 打赏
  • 举报
回复
这个不知道好写,不过可以用其他的方法,你先把“\,”替换成其他的字符如“&”,然后再用“,”分解,再遍历,把字符串里有“&”符号替换回来就行了。方法有点麻烦,但理解起来很简单
String str = "sdf,s1f\\,sddf,123";
str = str.replaceAll("\\\\,", "&");
System.out.println(str);
String[] arr=str.split(",");
for(int i=0;i<arr.length;i++){
if(arr[i].indexOf("&")!=0){
arr[i].replace("&", "\\,");
}
System.out.println(arr[i]);
}
小V小V志 2012-02-15
  • 打赏
  • 举报
回复
[^(\\)],不行。。。
  • 打赏
  • 举报
回复
String[] t = str.split("(?!\\\\),");
给分吧
未来需要奋斗 2012-02-12
  • 打赏
  • 举报
回复
你这个究竟是String str = "sdf,s1f\,sddf,123";
String[] arr = str.split("求该处正则");

str里是单\还是双\\? 你只要获取到下面的结果就行 还是一定要用正则了?!@
LCKKING 2012-02-12
  • 打赏
  • 举报
回复
都不对呀。、。。
ITbiyu 2012-02-11
  • 打赏
  • 举报
回复
这个“\”是正则表达式是“\\”,后面的“,”不知道是不是“,”.所以不知道结果是不是"\\,".
qq827010202 2012-02-11
  • 打赏
  • 举报
回复
这个正则不好写,除非用String的方法截取。
LCKKING 2012-02-11
  • 打赏
  • 举报
回复
楼上的明显不对哦。。。
LucEaspe 2012-02-11
  • 打赏
  • 举报
回复
split("\,");

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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