关于java中的\和正则表达式中的\

根据实际的测试和理解,在java字符串中\本来就表示转义字符,它会试图将后面挨着它的任何字符转义,如果转义无指定含义则非法,不能通过编译,比如\.所以在和正则无关的字符串中要表示路径中的分隔符都得用\\


所以要表示正则中特殊含义的\d,要用\先把\转义回来,再加上d,这样就是\\d,所以java的正则表达式中\基本都是成对出现的,因为它在java意义上的字符串中。这可能和php不同,因为php字符串中的正则表达式有专门的两个/来隔离。


所以想要利用正则表达式,用.来分割字符串,就得用\\.表示这个正则表达式。因为.在正则表达式中代表任意字符,要想表达.就要在正则意义上转义,而如果表示成\.则编译提示:非法转义符,因为这是在java意义上企图将.转义,而对应的意义是不存在的。所以要先在java意义上将\转义,即\\,然后在正则意义上转义.,即\\.,编译通过,切割正确:

例子:

public static void splitDemo(String str,String reg)
	{

		String[] arr=str.split(reg);

		for(String s:arr)
		{
			System.out.println(s);
		}

	}

String str1="zhangsan.lisi.wangwu";
		String reg1="\\.";//直接用.不行,代表正则表达式的任意字符,用\.则是(在java意义上)转义了.无意义(非法),所以用\转义一下\(变成正则意义上的转义字符?),所以用\\.表示用.切割!

		splitDemo(str1,reg1);


结果:

zhangsan

lisi

wangwu


关于这个问题的其他网友解答(引用,特此感谢):


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值