Greedy 数量词

X​?

X​,一次或一次也没有

X​*

X​,零次或多次

X​+

X​,一次或多次

X​{​n​}

X​,恰好 ​n​ 次

X​{​n​,}

X​,至少 ​n​ 次

X​{​n​,​m​}

X​,至少 ​n​ 次,但是不超过 ​m​ 次


预定义字符类

.

任何字符(与​​行结束符​​可能匹配也可能不匹配)

\d

数字:[0-9]

\D

非数字: [^0-9]

\s

空白字符:[ \t\n\x0B\f\r]

\S

非空白字符:[^\s]

\w

单词字符:[a-zA-Z_0-9]

\W

非单词字符:[^\w]

字符

x

字符 ​x

\\

反斜线字符

\0​n

带有八进制值 0 的字符 ​n​ (0 <= ​n​ <= 7)

\0​nn

带有八进制值 0 的字符 ​nn​ (0 <= ​n​ <= 7)

\0​mnn

带有八进制值 0 的字符 ​mnn​(0 <= ​m​ <= 3、0 <= ​n​ <= 7)

\x​hh

带有十六进制值 0x 的字符 ​hh

\u​hhhh

带有十六进制值 0x 的字符 ​hhhh

\t

制表符 ('\u0009')

\n

新行(换行)符 ('\u000A')

\r

回车符 ('\u000D')

\f

换页符 ('\u000C')

\a

报警 (bell) 符 ('\u0007')

\e

义符 ('\u001B')

\c​x

对应于 ​x​ 的控制符

忽略大小写:


import java.util.regex.Matcher;
import java.util.regex.Pattern;
1.方法1:
public class Test {

public static void main(String[] args) throws Exception {
String str="forM";

String regEx="form"; //表示a或f

Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE); //表示整体都忽略大小写

Matcher m=p.matcher(str);

boolean rs=m.find();
System.out.println(rs);
}

}
//方法2:java正则表达式:
(?i)abc 表示abc都忽略大小写
a(?i)bc 表示bc忽略大小写
a((?i)b)c 表示只有b忽略大小写

import java.util.regex.*;

class Regex

{

 public static void main(String[] args)

 {

  String str = "faaafbbdbddd";

  String[] strArry = str.split("(.)\\1+");//以连续出现两次以上的字符为分界点,分割字符串

  for(String s:strArry)

   System.out.println(s);

  System.out.println("-------------------------华丽分割线-----------------------------------");

  System.out.println(str.replaceAll("(.)\\1+","$1"));//置换匹配的子字符串“$”可以用来取第一个参数中的组

  System.out.println(str.matches(".*[d]{3}.*"));//判断整个字符串是否匹配

  System.out.println("-------------------------华丽分割线-----------------------------------");

  String str2 = "aaa,ff,ddd,sdss,dsa,dgdgdg,sss";

  String reg = "\\b[a-z]{3}\\b";//取三个连续的,两边有边界分割

  Pattern p = Pattern.compile(reg);//匹配规则封装

  Matcher m = p.matcher(str2);//将匹配规则和要匹配的字符串组合生成匹配引擎

  //System.out.println("m.matches():"+m.matches());这一句会使匹配的游标后移到第一个不匹配的位置:第一个f

  while(m.find())//引擎可以方便的根据自己的字符串和匹配规则执行一些操作,比如find:找到下一个匹配的子字符串

   /*获取、输出匹配的字段、起始位置、终了位置+1*/

   System.out.println(m.group()+

   "...m.start():"+m.start()+

   "...m.end():"+m.end());

 }

}


示例三:

1 public class RegTest {
2 public static void main(String[] args) throws Exception {
3 String str="formfirnformsajfowiehongform";
4
5 String regEx="f.*?m"; //
6
7 Pattern p=Pattern.compile(regEx); //表示整体都忽略大小写
8
9 Matcher m=p.matcher(str);
10
11 int i = 0;
12 while(m.find()) {
13 System.out.println(m.group()+"------起始位置:"+m.start()+";结束位置"+m.end()+";长度:"+(m.end()-m.start()));
14 i++;
15 }
16 System.out.println("字符串form在str中出现的次数为:"+i);
17
18 System.out.println(str.substring(4, 12));
19 }
20 }