xiaochun023 2010-02-05 15:17 采纳率: 0%
浏览 239
已采纳

java 中的正则什么时候用斜线,用多少斜线

最近小弟在用JAVA正则做一些数据采集,其中遇到一些不明之事,最让我费解的是正则表达式中的斜线问题
有如:

private static String zz="([\\s\\S]*?)"; //为什么要用四个斜线?

zurl_rule = zurl_rule.replaceAll("\[]", zz); //为什么要用又斜线

  • 写回答

2条回答 默认 最新

  • iteye_13500 2010-02-05 16:13
    关注

    http://tech.ddvip.com/2009-03/1238072554112363.html

    1. 字符串里面表示斜杠就需要两个斜杠如“\”

    2. 4个斜杠在正则表达式里面表示一个斜杠

    其实我也比较难理解,和实现有关,需要看jdk源码,可以通过一些测试来搞清含义:

    看下面代码
    [code="java"]import java.util.regex.*;

    public class RETest {
    public static void main(String[] args) {
    System.out.println("Test 1");
    String zurl_rule = "=[]=";
    String bb = "cc";
    System.out.println(zurl_rule.replaceAll("\[]", bb));

        System.out.println("Test 2");
        String zz = "^([\\\\s\\\\S])$";
        Pattern p = Pattern.compile(zz);
    
        String str = "S";
        Matcher m = p.matcher(str);
        System.out.println(m.find());
    
        str = "s";
        m = p.matcher(str);
        System.out.println(m.find());
    
        str = "\\";
        m = p.matcher(str);
        System.out.println(m.find());
    
        str = "\\\\";
        m = p.matcher(str);
        System.out.println(m.find());
    }
    

    }[/code]

    运行结果:
    [code="java"]Test 1
    =cc=
    Test 2
    true
    true
    true
    false[/code]

    对Test 1:
    zurl_rule.replaceAll("\[]", bb);
    目地是想对[]进行替换,但是直接使用"[]"通不过编译,需要在[前面加上两个\。

    对Test 2:
    对于模式"^([\\s\\S])$" (注意我去掉了上面后面的*?,加上了^和$),
    这个模式就是匹配一个字符,分别可以匹配一个\,s和S。由于字符串里面实际的一个斜杠,所以str = "\";来匹配为true。

    其实"^([\\s\\S])$"是可以写成"^([s\\S])$"的,两次四个斜杠重复了,方括号里写一次就行了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 数字取证课程 关于FAT文件系统的操作
  • ¥15 如何使用js实现打印时每页设置统一的标题
  • ¥15 安装TIA PortalV15.1报错
  • ¥15 能把水桶搬到饮水机的机械设计
  • ¥15 Android Studio中如何把H5逻辑放在Assets 文件夹中以实现将h5代码打包为apk
  • ¥15 使用小程序wx.createWebAudioContext()开发节拍器
  • ¥15 关于#爬虫#的问题:请问HMDB代谢物爬虫的那个工具可以提供一下吗
  • ¥15 vue3+electron打包获取本地视频属性,文件夹里面有ffprobe.exe 文件还会报错这是什么原因呢?
  • ¥20 用51单片机控制急停。
  • ¥15 孟德尔随机化结果不一致