您的位置:首页 > 编程语言 > Java开发

Java基础--正则表达式

2015-10-26 21:34 369 查看
正则表达式:就是有一定规则的字符串。然后其他方法调用时将其作为参数传入。

1,常见符号

字符
x 字符 x
\\ 反斜线字符
\0n 带有八进制值 0 的字符 n (0 <= n <= 7)
\0nn 带有八进制值 0 的字符 nn (0 <= n <= 7)
\0mnn 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh 带有十六进制值 0x 的字符 hh
\uhhhh 带有十六进制值 0x 的字符 hhhh
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
\cx 对应于 x 的控制符

字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)

预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]

边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾

Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次

Logical 运算符
XY X 后跟 Y
X|Y X 或 Y
(X) X,作为捕获组


2,正则表达式的四种功能

匹配、切割、替换、获取

1)匹配:String中的matches方法。


public static void qqCheck(String qq)
{
String reg = "[1-9]\\d{4-14}";//第一位只能是1-9, 后面是数字,接有4-14位。

//返回结果是boolean型,符合reg返回true。
qq.matches(reg);

}


2)切割:String[] 中split(String reg)


public class Regex {

public static void main(String[] args) {

String reg1 = "\\.";//以.切割
String reg2 = " +";//零个或多个空格切
String reg3 = "(.)\\1+";//以叠词切,

String[] s = "192.168.1.1".split(reg1);
print(s);

s = "he    ll   o   ".split(reg2);
print(s);

s = "dfnnnnnnnnnngiiiiidfiiiisdssssdcs".split(reg3);
print(s);
}
public static void print(String[] s)
{
for(String str : s)
System.out.print(str);
}

}


3)替换:String 中replaceAll方法


String s = "nnnnnnnnniiiiiiiissss";
String reg = "(.)\\1+";
s=s.replaceAll(reg, "$1");//$1表示reg表达式括号内的组合


4)获取:


package com.itheima;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex
{
public static void main(String[] args)
{
String s = "ma shang jiu yao qu heima ";
String reg = "\\b\\w{3}\\b";//这里定义正则表达式

get(s, reg);

}
public static void get(String s, String reg)
{
//Pattern是一个类,调用功能将规则封装成一个对象。
Pattern p = Pattern.compile(reg);

//将正则对象p和要作用的字符串s关联,返回的一个匹配器对象。
Matcher m = p.matcher(s);

while(m.find())//匹配器查找与模式匹配的一个子序列
System.out.println(m.group());//返回给定组捕获的子序列。

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: