可能这bai个问题对于初学者来du说比较头疼,zhi但是只要别人一点dao可能就明白了。JAVA中匹配反斜内杠的正则表达式的书写方容式为:1String regex="\\\\";注意了,一定要写四个反斜杠,第一和第三个反斜杠是用作java字符串的转义,实际上只代表两个反斜杠。其实只要输入如下代码运行验证一下即可:System.out.print("\\\\");//输出为 \\www.zgxue.com防采集请勿采集本网。
关于正则表达式raw的\匹配规则
就是调用第一个小括号中里面的内容,//2就是第二个小括号的,以此类推。。。
这是我在学习中获得到的一个例子,第一表达式中匹配到的是none。于是乎我就在思考,为什么会匹配不到,假设\t被转义成一个\t,那么也应该匹配到\tsanle,而不是none。
正则表达式中"/"是表达式开始和结束的标记,“\”可以将后面出现的字符标记为特殊字符,接下来在PHP中具体演示一下: 1,正则表达式是以/作为开始和结束的标记,表达式语法在两个/中间包裹,如下图所示 2,接着演示一下\,像下面的表达式匹配的是n
为了验证这个问题,我做了如下的实验:
正则表达式使用 Python 的 raw 字符串表示;在字符串前加个 "r" 反斜杠就不会被任何特殊方式处理,所以 r"\n" 就是包含"\" 和 "n" 的两个字符,而 "\n" 则是一个字符,表示一个换行。正则表达式通常在 Python 代码中都是用这种 raw 字符串表示。
那为什么一个会出现这样的结果呢,在正则表达式中,需要查找的字符串,会进行两次转义,先是传入的字符串进行第一层转换,例如:\\t --> \t .然后传到re解析器里进行第二层转换,\t -->tab键。而需要匹配的字符串\\\t -->两个反斜杠会变成一个反斜杠(因为前面那个\会转义后面的\,所以两个\就会变成一个\)。然后就变成\\t了,然后就变成直接的一个tab键,他们就匹配上了。
与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反
当出现raw时,如下:
反斜杠在Java字符串中需要转义符"\"转义才能使用,所以原字符串中的反斜杠需要两个反斜杠表示 而在正则表达式中两个反斜杠需要四个反斜杠来匹配,所以Java替换程序如下 在Javascript语言中反斜杠在原字符串中不需要转义,所以正则表达式中匹配它只
原来可以匹配的就变得不能匹配了,为什么呢,因为使用了raw之后原本会进行的第一层转换,就不再存在了,直接进入re解析器中进行第二层转换:
例如:\\tsanle -->只进行一次转换就变成了\tsanle.然而需要匹配的字符串还是进行之前的转换,就一个tab,他们就无法匹配上了。
以上就是我所理解的,如有疑惑,可以私信提问。这就是我所理解的正则规则
到此这篇关于正则表达式中两个反斜杠的匹配规则详解的文章就介绍到这了,更多相关正则表达式反斜杠内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网! 您可能感兴趣的文章:python正则表达式 匹配反斜杠的操作方法Python字符串和正则表达式中的反斜杠(''\'')问题详解解决Python正则表达式匹配反斜杠''''\''''问题python 正则表达式 反斜杠(/)的麻烦和陷阱
因为在Java中反来斜杠是转义符自,所以要让它表示本2113意,需要转义符5261(就是另一个反斜杠)进行转4102义,所以就需要两1653个反斜杠来表示反斜杠.这样在用java正则表达式匹配时,就需要用四个反斜杠(两个是转义符,两个是反斜杠)来匹配两个反斜杠.具体的程序如下,你看看就明白了.import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test { public static void main(String[] args) { String s="\\"; String regex="\\\\"; Pattern p=Pattern.compile(regex); Matcher m=p.matcher(s); if(m.matches()){ System.out.println("匹配"); }else{ System.out.println("不匹配"); } }}运行结果匹配,加转义字符/内容来自www.zgxue.com请勿采集。