黑马程序员--java基础--正则表达式

------- android培训java培训、期待与您交流! ---------

正则表达式:

正则表达式,又称正规表达式,常规表达式(Regular Expression)。它使用单个字符串里描述匹配一系列符合某个语法规则的字符串。

作用:用于专门字符串操作。

特点:用特定的符号还表示一些代码操作,简化书写。

好处:简化对字符串的操作。


正则表达式由两种字符构成。一种是在正则表达式中具体特殊意义的“元字符”,另一种是普通的“文本字符”。

元字符可以是一个字符,如“^”,也可以是一个字符序列,如“\w”。


[ ] 可以匹配任意一个字符。

[^ ] 可以匹配不在这里出现的字符。

.匹配且仅匹配任意一个字符

\转义字符,消除字符的特殊含义,不会单独出现

{}表示字符出现的次数{1}表示只出现1次,{1,3}表示出现1-2次

()组。从的一组开始,//1表示调用的一组。

$表示在其他地方调用组


数量:

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



字符:

字符
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 的控制符

预定义字符:

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

具体操作

1:匹配  

public boolean matches(String regex)
告知此字符串是否匹配给定的 正则表达式

例:


package com.itheima;

public class RegexTest2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String mail = "710838967@qq.com";
		String regex = "\\w+@\\w+(\\.[a-zA-Z]+)+";
		System.out.println(mail.matches(regex));
	}

}

2:替换

public String replaceAll(String regex,
                         String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的 正则表达式的子字符串。

例:

package com.itheima;

public class RegexTest2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String mail = "710838967@qq.com";
		String regex = "\\w+";
		System.out.println(mail.replaceAll(regex, "#"));
	}

}

3:切割
public String[] split(String regex)
根据给定 正则表达式的匹配拆分此字符串。
例:
package com.itheima;

public class RegexTest2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String mail = "710838967@qq.com";
		String regex = "(.)\\1";
		String[] str = mail.split(regex);
		for (String string : str) {
			System.out.println(string);
		}
	
	}
}

4:获取

操作步骤:

1.将正则表达式分装成对象。

2.让正则对象和要操作的字符串串联。

3.关联后,获取匹配引擎。

4.获取。
例:

package com.itheima;


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

public class RegexTest2 {


	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		String line = "http://10.2.3.77/docs/index.html";
		String regex = "[a-zA-Z]{1,10}";
		//将正则表达式分装成对象。
		Pattern p = Pattern.compile(regex);
		//让正则对象和要操作的字符串串联。关联后,获取匹配引擎。
		Matcher m = p.matcher(line);
		//获取。
			while (m.find()) {
				System.out.println(m.group());
			}
	}
}


------- android培训java培训、期待与您交流! ---------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值