黑马程序员---------------JAVA基础--------正则表达式
来源:互联网 发布:mac上如何装office 编辑:程序博客网 时间:2024/06/07 19:35
------- android培训、java培训、期待与您交流! ----------
正则表达式:专门用于操作字符串。
正则表达式的操作:1 匹配
public class RegexText {public static void main(String[] args){//对qq号码进行校验 要求 5-15位,0不能开头,只能数字。String str = "54642345";String regex = "[1-9][0-9]{4,14}";System.out.println(str.matches(regex));if(str.matches(regex))System.out.println("匹配成功!");elseSystem.out.println("qq 号不匹配!");}}true匹配成功!String str = "546a2345";falseqq 号不匹配!String类有matches(String regex)方法,可以用来匹配字符串是否匹配要求。
正则表达式的构造概要:
x 字符 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]
^ 行的开头
$ 行的结尾
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
\n 任何匹配的 第n 捕获组
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
1 ((A)(B(C)))
2 \A
3 (B(C))
4 (C)
组零始终代表整个表达式。
//因此String regex = "[1-9][0-9]{4,14}"; 为第一个为1-9的数字,第二位为0-9的数字且出现了4到14次。
操作二: 切割
String[] split(String regex);// <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">根据给定正则表达式的匹配拆分此字符串。</span>
想要按照叠词切割单词:
public class RegexText {public static void main(String[] args){String str ="fdddgfdffsdsaaes";String regex = "(.)\\1+"; // .表示任意字符,括起来就是第一组,+ 是依次或多次,就是说前面第一组匹配的又出现了一次或多次,即叠词。String[] arrs =str.split(regex);for(String arr : arrs){System.out.println(arr);}}}输出:fgfdsdses这也看出了正则表达式的一个弊端:符号越长,正则越多,越难阅读。
第三种操作: 替换
String replaceAll(String regex, String replacement) //使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
public static void main(String[] args){String str ="asssdffgghhdeefss";String regex = "(.)\\1+";System.out.println(str.replaceAll(regex, "$1")); // $1 表示第一组捕获到的内容,即用捕获到的字母替换叠词。}输出:asdfghdefs
操作步骤:
1 将正则表达式封装成对象(compile);
2 将正则对象和要操作的字符串相关联;
3 关联后,获得匹配引擎(Mather)
4 通过引擎对符合规则的子串进行取出。
Pattern类和Matcher类:
Pattern:
static Pattern compile(String regex) 将给定的正则表达式编译到模式中。
Matcher matcher(CharSequence input) 创建匹配给定输入与此模式的匹配器。
Matcher:
boolean matches() 尝试将整个区域与模式匹配。
boolean find() 尝试查找与该模式匹配的输入序列的下一个子序列。
String group(int group) 返回在以前匹配操作期间由给定组捕获的输入子序列。
....
import java.util.regex.*;public class RegexText {public static void main(String[] args){String str = "ming tian jiu yao fang jia le";String regex = "\\b[a-z]{4}\\b";//将规则封装成对象Pattern pattern = Pattern.compile(regex);//正则对象和要作用的字符串相关联。获取匹配器Matcher matcher = pattern.matcher(str);while(matcher.find())System.out.println(matcher.group());}}输出:mingtianfang联系 对邮件地址进行匹配:
String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]){1,3}";
- 黑马程序员-java基础 正则表达式
- 黑马程序员---java基础之正则表达式
- 黑马程序员----JAVA基础之正则表达式
- 黑马程序员-JAVA基础-正则表达式
- 黑马程序员:Java基础总结----正则表达式
- 黑马程序员 java基础回顾---正则表达式
- <<黑马程序员>>java基础之正则表达式
- 黑马程序员--java基础--正则表达式总结
- 黑马程序员---Java基础总结---正则表达式
- 【黑马程序员】java基础_正则表达式
- 黑马程序员-----java基础 正则表达式
- 黑马程序员-->Java基础-->正则表达式
- 黑马程序员-java基础之正则表达式
- 黑马程序员--java基础--正则表达式
- 黑马程序员 Java基础之正则表达式
- 黑马程序员 java基础之正则表达式
- Java基础---正则表达式 (黑马程序员)
- 黑马程序员--java基础之正则表达式
- 剑指offer 面试题16—反转链表
- vb.net环境下将DataTable转成泛型集合方法
- day17/CollectionsDemo3.java
- Java基础——多线程+卖票程序+同步函数-单例设计模式+死锁
- ACDREAM 03C Robbers(贪心专场)
- 黑马程序员---------------JAVA基础--------正则表达式
- day17/CollectionsDemo4.java
- 面对象
- JSP标准动作、EL表达式和JSTL
- OC--内存管理(1)
- 字符串的填充、复制与加密和解密
- day17/CollectionToArray.java
- 命令行的简单使用
- 链表 Partition List