正则表达式,字符串中需要两个反斜杠“\d”
Posted 牛顿的小脑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式,字符串中需要两个反斜杠“\d”相关的知识,希望对你有一定的参考价值。
这个正则表达式为什么会有两个反斜杠?
"^.*?\\\\.(jpg|png|bmp|gif)$"上面这个正则表达式为什么有两个反斜杠呢?反斜杠点\\.就能表示点.了,为什么还要在\\.前面多加一个\\?
-----------------
这要分两步看
首先字符串中的\\\\被编译器解释为\\ -------》 第一步,编译器将字符串转变为“正则表达式”
然后作为正则表达式,\\.又被正则表达式引擎解释为. ----------------> 第二步,才开始把第一步的结果当做是正则表达式,开始进行匹配!
如果在字符串里只写\\.的话,第一步就被直接解释为.,之后作为正则表达式被解释时就变成匹配任意字符了
String line = "This order was placed for QT30012!bmmmb OK?8976a"; String pattern = "(\\\\d{2,3})"; Pattern r = Pattern.compile(pattern); // Now create matcher object. Matcher m = r.matcher(line); if (m.find()) { System.out.println("Found value: " + m.group(0)); }else{ System.out.println("NO MATCH"); }
-------------------------------------------------------------------------2017年8月29日20:31:49 补充------------------------------------
验证一下,我们的“两步论!”
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Sa { public static void main(String args[]) { // String to be scanned to find the pattern. String line = "This order was placed for QT30012!bmmmb OK?8976a"; String pattern = "(\\\\d{2,3})"; System.out.println(pattern); /* Pattern r = Pattern.compile(pattern); // Now create matcher object. Matcher m = r.matcher(line); if (m.find()) { System.out.println("Found value: " + m.group(0)); System.out.println("Found value: " + m.group(1)); System.out.println("Found value: " + m.group(2)); System.out.println("Found value: " + m.group(3)); } else { System.out.println("NO MATCH"); } */ } }
代码中是 (\\\\d{2, 3}), 输出结果少了一个 反斜杠,说明索引号字符串中的\\\\会转义!
以上是关于正则表达式,字符串中需要两个反斜杠“\d”的主要内容,如果未能解决你的问题,请参考以下文章