A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pi408637535 中级黑马   /  2015-7-16 16:32  /  256 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Java中的java.util.regex包用于正则表达式的模式匹配。
一个正则表达式就是一个特定的字符序列,能够用来匹配、查找或者设置字符串,正则表达式使用特定的语法表示一个模式,也被用来进行搜索,编辑或处理文本和数据。
java.util.regex包主要包括以下三个类:
Pattern类:pattern对象是一个正则表达式的编译表示。Pattern类没有公共构造方法。要创建一个Pattern对象,你必须首先调用其公共静态编译方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第一个参数。
Matcher类:Matcher对象是对输入字符串进行解释和匹配操作的引擎。与Pattern类一样,Matcher也没有公共构造方法。你需要调用Pattern对象的matcher方法来获得一个Matcher对象。
PatternSyntaxException:PatternSyntaxException是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
捕获组:

捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。
例如,正则表达式(dog) 创建了单一分组,组里包含"d","o",和"g"。
捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:
((A)(B(C)))
(A)
(B(C))
(C)
可以通过调用matcher对象的groupCount方法来查看表达式有多少个分组。groupCount方法返回一个int值,表示matcher对象当前有多个捕获组。
还有一个特殊的组(组0),它总是代表整个表达式。该组不包括在groupCount的返回值中。
示例:
下面的例子说明如何从一个给定的字符串中找到数字串:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches
{
    public static void main( String args[] ){
      // String to be scanned to find the pattern.
      String line = "This order was places for QT3000! OK?";
      String pattern = "(.*)(\d+)(.*)";
      // Create a Pattern object
      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) );
      } else {
         System.out.println("NO MATCH");
      }
   }
}
运行结果如下:
Found value: This order was places for QT3000! OK?
Found value: This order was places for QT300
Found value: 0
正则表达式语法:

下面是Java中所有正则表达式元字符的列表:
子表达式        匹配
^         匹配开始行
$         匹配结束行
.         匹配除换行外所有单个字符。使用m选项,允许它来匹配换行符。
[...]         匹配括号内任何单个字符。
[^...]         匹配不在括号内任何单个字符。
A         整个字符串的开头
z         整个字符串的结束
32         结束整个字符串但允许最后一行终结符。
re*         匹配0或多个前面的表达式。
re+         匹配1或多个前面的表达式。
re?         匹配0或1个前面的表达式。
re{ n}         匹配n个前面的表达式。
re{ n,}         匹配n个或更多个前面的表达式。
re{ n, m}         匹配n到m个前面的表达式。
a| b         匹配a或者b。
(re)         分组正则表达式并记住匹配内容。
(?: re)         分组正则表达式无需记住匹配内容。
(?> re)         没有回溯的独立匹配模式。
w         匹配单词字符。
W         匹配非单词字符。
s         匹配空白。等价于[         f].
S         匹配一个非空白。
d         匹配数字,等价于[0-9]。
D         匹配非数字。
A         匹配字符串的开始。
32         匹配字符串的结尾。如果存在一个换行符,只匹配换行符之前的。
z         匹配字符串的结束。
G         匹配最后的匹配点。
返回捕获组编号“n”。
         匹配括号外的单词边界。匹配括号内的退格(0x08)。
B         匹配非单词边界。
, , etc.         匹配换行,回车符,制表符等。
Q         跳过(引用)所有字符直到E。
E         结束Q开始的引用。

1 个回复

倒序浏览
不错,学习了。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马