正则表达式中两个反斜杠的匹配规则详解_正则表达式

来源:脚本之家  责任编辑:小易  

可能这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请勿采集。


  • 本文相关:
  • javascript正则表达式匹配字符串字面量
  • cfc4n小试php正则表达式
  • js正则表达式 匹配两个特定字符间的内容示例
  • js正则表达式替换url参数的方法
  • 收集的asp.net中常用正则表达式
  • javascript正则表达式标记中/g /i /m的用法,以及实例
  • 用正则表达式批量为a增加target=''''_blank''''新窗口打开的方法
  • scala中正则表达式以及与模式匹配结合(多种方式)
  • 正则表达式惰性匹配模式(?)
  • javascript正则表达式之后向引用实例代码
  • java正则表达式怎么匹配反斜杠
  • java正则表达式如何匹配反斜杠?
  • 正则表达式,求匹配:双反斜杠(\\)合法,单反斜...
  • 正则表达式为什么会有两个反斜杠?
  • 正则表达式中两个反斜杠代表什么 例如//1
  • 在正则表达式中“/”和“\”符号的区别!
  • 正则表达式:如何匹配反斜杠 "/"
  • Python 正则表达式 反斜杠问题
  • 用正则表达式, ******\S^******;****** 如何一次替...
  • C#正则表达式的疑惑,关于反个"反斜杠".
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页python正则表达式 匹配反斜杠的操作方法python字符串和正则表达式中的反斜杠(""\"")问题详解解决python正则表达式匹配反斜杠""""\""""问题python 正则表达式 反斜杠(/)的麻烦和陷阱javascript正则表达式匹配字符串字面量cfc4n小试php正则表达式js正则表达式 匹配两个特定字符间的内容示例js正则表达式替换url参数的方法收集的asp.net中常用正则表达式javascript正则表达式标记中/g /i /m的用法,以及实例用正则表达式批量为a增加target=""""_blank""""新窗口打开的方法scala中正则表达式以及与模式匹配结合(多种方式)正则表达式惰性匹配模式(?)javascript正则表达式之后向引用实例代码java 正则表达式详解正则表达式匹配任意字符(包括换比较正宗的验证邮箱的正则表达式最新手机号码、电话号码正则表达javascript 手机号码正则表达式验js利用正则配合replace替换指定字正则表达式匹配不包含某些字符串正则中需要转义的特殊字符小结js正则函数match、exec、test、s匹配中文汉字的正则表达式介绍正则表达式截取身份证号码加密的方法正则表达式(括号)、[中括号]、{大括号}的通过脚本清空标签p中的class名和stylelinux shell 正则表达式(bres,eres,pres)详解linux正则表达式(基础正则表达式+扩常用javascript正则表达式汇编与示例详解验证注册用户名必须为字母我的正则asp.net 正则表达式的应用js 正则表达式判断各个浏览器代码详解
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved