正则表达式(正则表达式在线测试工具)

  本篇文章为你整理了正则表达式(正则表达式在线测试工具)的详细内容,包含有正则表达式生成器 正则表达式在线测试工具 正则表达式中的.*和.*?的区别是什么?() 正则表达式匹配指定字符串 正则表达式,希望能帮助你了解 正则表达式。

  一个正则表达式就是一个描述规则的字符串。

  只需要编写正确的规则,就可以让正则表达式引擎去判断目标字符串是否符合规则。

  正则表达式是一套标准,可以用于任何语言。

  jdk的内置正则表达式引擎:java.util.regex

  匹配方向:

  从左到右按规则匹配

  匹配规则:

   :精确匹配:“a\ c” 精确匹配ac

  用. 来匹配任意一个字符。 “a.c” abc aac acc等

  \d: 来匹配数字: “00\d”

  \w :可以匹配一个字母,数字或下划线:“java\w” 不能匹配#和空格。

  \s: 可以匹配一个空格字符。“a\sb”

  \D:可以匹配任意一个非数字的符号(包括#)。”00\D”

  \W: 非字母,数字下划线;“java\w” 可能是 java_

  \S: 可以匹配一个非空白字符:”A\SB“ 可以是A B ABB 不能是”A B“

  *: 可以匹配任意0次或多次字符

  +:可以匹配至少1字符。

  ?: 可以匹配零个或一个字符。“A?B” 可以是A和B的任意字符。

  {n} : 表示匹配n个字符。”\d{6}” 匹配6个数字

  {n,m}:表示匹配n到m个字符。“\d{3,5}”表示匹配3到5个数字

  {n,}:至少n个字符。

  复杂的匹配规则:

  加上^(开头)和$(结尾)会变得严谨,java默认只能做单行匹配,可以不加。

  […]可以匹配范围内的字符:”[abc]1” 表示abc中的一个 a1 b1 c1;

  [a-f]1 表出a到f中的一个和1结合;[a-f0-9_]{6} 下划线和字母数字间没有顺序

  [^…]:匹配[…]内除外的所有字符

  ABCD: AB或CD

  learn\s(ABCD): learn (空格)AB或者learn (空格)CD

  案例:匹配5到10位的qq号

  

public static boolean isValidQQ(String s){

 

   return s.matches("^[1-9]\\d{4,9}$");

  

 

  分组匹配规则

  (…)可以用来分组:

  String.matches vs Pattern.mather

  实际上是一样的,string的matches内部调用的就是pattern.mather

  反复使用一个正则表达式进行快速匹配效率低下

  可以把正则表达式字符串编译成pattern对象

  

Pattern pattern = Pattern.compile("^\\d{3,4}\\-\\d{6,8}$");

 

  pattern.mather("010-12345678").matches(); //true

  //获取Match的对象:

  Matcher matcher = Pattern.matcher(String s);

  matcher.matches(); //true or false

  

 

  使用Matcher.group(n)快速提取子串

  

String s = "010-123456";

 

   Pattern pattern = Pattern.compile("^(0\\d{2,3})-([1-9]\\d{5,7})");

   Matcher matcher = pattern.matcher(s);

   if(matcher.matches()){

   String s0=matcher.group(0); //表示获取全部字符。

   String s1=matcher.group(1);

   String s2=matcher.group(2);

   System.out.println(s1);

   System.out.println(s2);

  

 

  贪婪匹配和非贪婪匹配

  正则表达式的贪婪匹配

  默认是贪婪匹配,就是在匹配时尽可能多地向后匹配。

  非贪婪匹配

  

String s="9999";

 

   Pattern pattern = Pattern.compile("^(\\d??)(9*)$");

   Matcher m = pattern.matcher(s);

   if(m.matches()){

   String s1 = m.group(1);

   String s2 = m.group(2);

   System.out.println(s1);

   System.out.println(s2);

  

 

  提取,搜索及替换

  提取的例子

  String[] String.split(String regex);

  

String s = "a#b;;c, 1234;5;";

 

   String[] str = s.split("[\\,\\#\\s+\\;]+");

   for (String s1 : str) {

   System.out.println(s1);

  

 

  搜索的例子

  Matcher.find();

  

public static void main(String[] args) {

 

   String s = "the good things hello";

   Pattern p = Pattern.compile("the",Pattern.CASE_INSENSITIVE); //忽略大小写

  \\ \\w+ 提取每一个单词 \\w*o\\w* 带有o的单词

   Matcher m = p.matcher(s);

   while (m.find()){

   String sub = s.substring(m.start(),m.end());

   System.out.println(sub);

  

 

  替换

  String.replaceAll();

  

public static void main(String[] args) {

 

   String s = "the quick brown fox jumps over the lazy dog.";

   String s1 = s.replaceAll("\\s+", " ");

   System.out.println(s1);

  //再将s1的内容加粗体处理

   String s2 = s1.replaceAll("(\\w+)", " b $1 /b

   System.out.println(s2);

  

 

  以上就是正则表达式(正则表达式在线测试工具)的详细内容,想要了解更多 正则表达式的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: