黑马程序员——java基础——正则表达式
来源:互联网 发布:mac unix 编辑:程序博客网 时间:2024/05/21 10:17
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------正则表达式
正则表达式:
(1)概述:就是符合一定规则的字符串
(2)常见规则
A:字符
x 字符 x。举例:'a'表示字符a
\\ 反斜线字符。
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
B:字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
[0-9] 0到9的字符都包括
C:预定义字符类
. 任何字符。我的就是.字符本身,怎么表示呢? \.
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
在正则表达式里面组成单词的东西必须有这些东西组成
D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
就是不是单词字符的地方。
举例:hello world?haha;xixi
E:Greedy 数量词
X? X, 一次或一次也没有
X* X, 零次或多次
X+ X, 一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
(3)常见功能:
A:判断功能
String类的 public boolean matches(String regex)
B:分割功能
String类的 public String[] split(String regex)
C:替换功能
String类的 public String replaceAll(String regex,String replacement)
D:获取功能
Pattern和Matcher
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
find():查找存不存在
group():获取刚才查找过的数据
(4)案例
A:判断QQ号码
<span style="font-size:18px;">public class RegexDemo {public static void main(String[] args) {// 创建键盘录入对象Scanner sc = new Scanner(System.in);System.out.println("请输入你的QQ号码:");String qq = sc.nextLine();System.out.println("checkQQ:"+checkQQ(qq));} public static boolean checkQQ(String qq) {boolean flag = true;// 校验长度if (qq.length() >= 5 && qq.length() <= 15) {// 0不能开头if (!qq.startsWith("0")) {// 必须是数字char[] chs = qq.toCharArray();for (int x = 0; x < chs.length; x++) {char ch = chs[x];if (!Character.isDigit(ch)) {flag = false;break;}}} else {flag = false;}} else {flag = false;}return flag;}}</span>
B:按照不同的规则分割数据
<span style="font-size:18px;">public class RegexDemo2 {public static void main(String[] args) {// 定义一个字符串String s1 = "aa,bb,cc";// 直接分割String[] str1Array = s1.split(",");for (int x = 0; x < str1Array.length; x++) {System.out.println(str1Array[x]);}System.out.println("---------------------");String s2 = "aa.bb.cc";String[] str2Array = s2.split("\\.");for (int x = 0; x < str2Array.length; x++) {System.out.println(str2Array[x]);}System.out.println("---------------------");String s3 = "aa bb cc";String[] str3Array = s3.split(" +");for (int x = 0; x < str3Array.length; x++) {System.out.println(str3Array[x]);}System.out.println("---------------------");//硬盘上的路径,我们应该用\\替代\String s4 = "E:\\JavaSE\\day14\\avi";String[] str4Array = s4.split("\\\\");for (int x = 0; x < str4Array.length; x++) {System.out.println(str4Array[x]);}System.out.println("---------------------");}}</span>
C:把论坛中的数字替换为*
<span style="font-size:18px;">public class RegexDemo { public static void main(String[] args) { // 定义一个字符串 String s = "helloqq12345worldkh622112345678java"; // 我要去除所有的数字,用*给替换掉 String regex = "\\d+"; String ss = "*"; String result = s.replaceAll(regex, ss); System.out.println(result); }}</span>
D:获取字符串中由3个字符组成的单词
<span style="font-size:18px;">public class RegexDemo2 {public static void main(String[] args) {// 定义字符串String s = "da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";// 规则String regex = "\\b\\w{3}\\b";// 把规则编译成模式对象Pattern p = Pattern.compile(regex);// 通过模式对象得到匹配器对象Matcher m = p.matcher(s);while (m.find()) {System.out.println(m.group());}// 注意:一定要先find(),然后才能group() String ss = m.group(); System.out.println(ss);}}</span>
- 黑马程序员——java基础——正则表达式
- 黑马程序员——java基础——正则表达式
- 黑马程序员——java基础——正则表达式
- 黑马程序员——java基础——正则表达式
- 黑马程序员——java基础——正则表达式
- 黑马程序员——Java基础—正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员-Java基础总结14——正则表达式
- 黑马程序员——Java基础-15--正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员——java基础:正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员——java基础--正则表达式
- 黑马程序员——Java基础-----正则表达式
- 黑马程序员——Java基础->正则表达式
- 黑马程序员——Java基础---正则表达式
- 黑马程序员——java基础之正则表达式
- 黑马程序员——Java基础-----正则表达式
- Javascript Math ceil()、floor()、round()三个函数的区别
- Left:Firefox 36 VS Right:Chrome 41
- PHP中CURL详细教程
- 02 窗口与视图的基本概念和用法
- Win7与CentOS双系统时间差8个小时问题
- 黑马程序员——java基础——正则表达式
- Python中 == 与 is 的区别和应用场景
- 集合
- UVA - 10401 Injured Queen Problem
- live555基础概念【转】
- 学习笔记
- mysql无法创建存储过程(stored procedure
- UVA - 10921 - Problem B - Find the Telephone
- 动态规划程序设