Java正则表达式
2012-02-26 21:43
190 查看
在识别数据流名称时由于想支持正则表达式的订阅流方式,在此接触了一些,作个记录。
错误:Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
报错主要是源于这一句:
根据Java Language Specification 的要求,Java 源代码的字符串中的反斜线被解释为Unicode 转义或其他字符转义。因此必须在字符串字面值中使用两个反斜线表示正则表达式受到保护,不被 Java 字节码编译器解释。故而在这里,\w是转义字符,虽然就正则表达式来看^\w+$确实没错,但是为了不让java字节码编译器解释为其它,需要再加上一个反斜杆。这样就不再报错了。
2. 关于识别仅由数字, 字母及下划线组成,据此我为认为这是一个非正则表达式,只是一个普通的数据流名称。判别方法:
但其实关于这个,我一直有一个疑问,这是一个特例吗,因为\w其实表示的是匹配任意的数字和字母,这里是通过哪个符号把下划线_包括进去了呢...
$是表示匹配线,+号是重复一次或多次
3. 关于匹配任意字符:
一直用windows搜索时都很习惯于,匹配任意字符时直接用*号,比如说streamA, streamB, streamC,那么我应该直接用stream*就可以匹配前面这三个,但在测试时才发现跟自己想的不一样,对于Java的正则表达式来说,直接用*号,表示的是它前面的那个字符重复0次或多次。
而.号才是表示匹配任意字符,故而想匹配stream开头的字符时应该用stream.* 。这样匹配的才会是正确的。
另外,又发现".*"并不是想象中的匹配任意字符,并不起作用。
错误:Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
报错主要是源于这一句:
Pattern pattern = Pattern.compile("^\w+$");
根据Java Language Specification 的要求,Java 源代码的字符串中的反斜线被解释为Unicode 转义或其他字符转义。因此必须在字符串字面值中使用两个反斜线表示正则表达式受到保护,不被 Java 字节码编译器解释。故而在这里,\w是转义字符,虽然就正则表达式来看^\w+$确实没错,但是为了不让java字节码编译器解释为其它,需要再加上一个反斜杆。这样就不再报错了。
2. 关于识别仅由数字, 字母及下划线组成,据此我为认为这是一个非正则表达式,只是一个普通的数据流名称。判别方法:
Pattern pattern = Pattern.compile("^\\w+$"); Matcher matcher = pattern.matcher(stream);
但其实关于这个,我一直有一个疑问,这是一个特例吗,因为\w其实表示的是匹配任意的数字和字母,这里是通过哪个符号把下划线_包括进去了呢...
$是表示匹配线,+号是重复一次或多次
3. 关于匹配任意字符:
一直用windows搜索时都很习惯于,匹配任意字符时直接用*号,比如说streamA, streamB, streamC,那么我应该直接用stream*就可以匹配前面这三个,但在测试时才发现跟自己想的不一样,对于Java的正则表达式来说,直接用*号,表示的是它前面的那个字符重复0次或多次。
而.号才是表示匹配任意字符,故而想匹配stream开头的字符时应该用stream.* 。这样匹配的才会是正确的。
另外,又发现".*"并不是想象中的匹配任意字符,并不起作用。
相关文章推荐
- 我想得到文本框中输入的三位的整数,用java的正则表达式怎么实现啊?
- Java基础-----正则表达式
- JAVA正则表达式,提取img的src问题!!!
- Java中使用正则表达式处理文本数据
- Java正则表达式1
- 【java 正则表达式】记录所有在java中使用正则表达式的情况
- java程序员:一刻钟精通正则表达式
- java--字符编码,正则表达式
- Java中常用的正则表达式
- JAVA使用邮箱的正则表达式代码
- Java正则表达式 重复字符(串)问题
- Java 正则表达式数据校验
- 016Java正则表达式
- 学点Java正则表达式
- Java知识总结(5)——正则表达式
- java正则表达式表单验证类工具类(验证邮箱、手机号码、qq号码等)
- JAVA抓取网页的图片,JAVA利用正则表达式抓取网站图片
- 使用Java正则表达式匹配IP
- java中正则表达式的优先级
- Java的正则表达式的基本语法(不全)