Java正则表达式入门基础知识点有哪些

  介绍

小编给大家分享一下Java正则表达式入门基础知识点有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

<强>一、正则表达式基础知识
<强> 1.1句点符号
假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开的头,以“n”字母结束。另外,假设有一本英文字典,你可以用正则表达式搜索它的全部内容。要构造出这个正则表达式,你可以使用一个通配符——句点符号“。”。这样,完整的表达式就是“t。n”,它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”,还有其他许多无意义的组合。这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符:
1.2 方括号符号
为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号(“[]”)里面指定看来有意义的字符。此时,只有方括号里面指定的字符才参与匹配。也就是说,正则表达式“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”。但“Toon”不匹配,因为在方括号之内你只能匹配单个字符:
1.3 “或”符号
如果除了上面匹配的所有单词之外,你还想要匹配“toon”,那么,你可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号“()”。圆括号还可以用来分组。
1.4 表示匹配次数的符号
下表显示了正则表达式的语法:

表 1.1 正则表达式语法

Java正则表达式入门基础知识点有哪些

Java正则表达式入门基础知识点有哪些

假设我们要在文本文件中搜索美国的社会安全号码。这个号码的格式是999-99-9999。用来匹配它的正则表达式如图一所示。在正则表达式中,连字符(“-”)有着特殊的意义,它表示一个范围,比如从0到9。因此,匹配社会安全号码中的连字符号时,它的前面要加上一个转义字符“/薄?/p>

假设进行搜索的时候,你希望连字符号可以出现,也可以不出现——即,999-99-9999和999999999都属于正确的格式。这时,你可以在连字符号后面加上“?”数量限定符号。

美国汽车牌照的一种格式是四个数字加上二个字母。它的正则表达式前面是数字部分“[0-9]{4}”,再加上字母部分“[A-Z]{2}”。
1.5 “否”符号
“^”符号称为“否”符号。如果用在方括号内,“^”表示不想要匹配的字符。例如,图四的正则表达式匹配所有单词,但以“X”字母开头的单词除外。
1.6 圆括号和空白符号
 “/s”符号是空白符号,匹配所有的空白字符,包括Tab字符。如果字符串正确匹配,接下来如何提取出月份部分呢?只需在月份周围加上一个圆括号创建一个组,然后用ORO API提取出它的值。
1.7 其它符号
为简便起见,你可以使用一些为常见正则表达式创建的快捷符号。如以下所示:
/t:制表符,等同于/u0009
/n:换行符,等同于/u000A
/d:代表一个数字,等同于[0-9]
/D:代表非数字,等同于[^0-9]
/s:代表换行符、Tab制表符等空白字符
/S:代表非空白字符
/w:字母字符,等同于[a-zA-Z_0-9]
/W:非字母字符,等同于[^/w]
例如,在前面社会安全号码的例子中,所有出现“[0-9]”的地方我们都可以使用“/d”。
二、以下是我整理出来的程序,供参考:

package org.luosijin.test; 
  ,
  import  java.util.regex.Matcher,
  import  java.util.regex.Pattern,
  {public  class  Regex 
  ,public  static  void  main (String [], args), {,
  Pattern 才能;Pattern =, Pattern.compile (“b * g");,
  Matcher 才能;Matcher =, pattern.matcher (“bbg");,
  System.out.println才能(matcher.matches ()),,
  System.out.println才能(pattern.matches (“b * g",“bbg")),,//才能验证邮政编码,
  System.out.println才能(pattern.matches (“[0 - 9] {6},,,“200038“)),,
  System.out.println才能(pattern.matches (“//d {6},,,“200038“)),,//才能验证电话号码,
  System.out.println才能(pattern.matches (“[0 - 9] {3、4}//- ? [0 - 9] +“,,“02178989799“)),,
  获取当前日期才能(“Nov  2009“),,
  charReplace才能(),,//才能验证身份证:判断一个字符串是不是身份证号码,即是否是15或18位数字只
  System.out.println才能(pattern.matches (“^//d {15} |//d {18} $,,,“123456789009876“)),,
  ,,getString (“D:/dir1/test.txt"),,
  getChinese才能(“welcome 用中国,江西奉新,欢迎,你!“),,
  validateEmail才能(“luosijin123@163.com");,
  }大敌;/* *大敌;
  *,才能日期提取:提取出月份来,
  */才能,
  ,public  static  void 获取当前日期(String  str) {,
  String 才能;regEx=?[a-zA-Z] +) |//s + [0 - 9] {1,2},//s * [0 - 9] {4},,,
  Pattern 才能;Pattern =, Pattern.compile(正则表达式),,
  Matcher 才能;Matcher =, pattern.matcher (str);,
  如果才能(! matcher.find ()) {,
  ,,System.out.println(“日期格式错误!“),,
  ,,,返回;
  ,,},
  System.out.println才能(matcher.group(1)),,//分组的索引值是从1开始的,所以取第一个分组的方法是m.group(1)而不是m.group(0)只
  }大敌;/* *大敌;
  *,才能字符替换:本实例为将一个字符串中所有包含一个或多个连续的“a”的地方都替换成“a”只
  */才能,
  ,public  static  void  charReplace () {,
  String 才能;regex =,“+”,
  Pattern 才能;Pattern =, Pattern.compile(正则表达式),,
  Matcher 才能;Matcher =, pattern.matcher (“okaaaa  LetmeAseeaaa  aa  booa"),,
  String 才能;s =, matcher.replaceAll (“A");,
  System.out.println才能(s),,
  }大敌;/* *大敌;
  *,才能字符串提取,
  */才能,
  ,public  static  void  getString (String  str) {,
  String 才能;regex =,“+/(+)“美元;,,
  Pattern 才能;Pattern =, Pattern.compile(正则表达式),,
  Matcher 才能;Matcher =, pattern.matcher (str);,
  如果才能(! matcher.find ()) {,
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

Java正则表达式入门基础知识点有哪些