正则表达式_小记
来源:互联网 发布:六壬排盘软件 编辑:程序博客网 时间:2024/06/07 19:41
正则表达式常用的语法:
A:字符
x 字符 x :任意的字符
\ 反斜线字符 在代码中书写正则表达式:——>用两个\代表一个反斜线
\t 制表符 (‘\u0009’)
\n 新行(换行)符 (‘\u000A’) IO流中要写入换行符号:windows “\r\n”
\r 回车符 (‘\u000D’)
B:字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围) :当前字母大小均可
C:预定义字符类
. 任何字符 邮箱里面:如果本身就是.,那么在写正在表达式的时候,\.将当前.转义\d 数字:[0-9] \d在正则表达式应用的时候:[0-9]--->\\d\w 单词字符:[a-zA-Z_0-9]:简单一些字符串,单词字符(规则:数字或者字母) javascript:[a-zA-Z0-9]
D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界 :
E:Greedy 数量词
X? X元素出现一次或一次也没有出现
X* X元素出现零次或多次
X+ X元素出现一次或多次
X{n} X,恰好产生n 次
X{n,} X,至少产生 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
正则表达式的应用,我们可以把字符串的判断用正则表达式来的替换之前的if判断句,然后减少代码量和代码冗余度。
例:判断一个QQ号的长度是否符合长度为5到10位,且首位不能为0的一个规则。
代码简写//符合长度在5到10位之间if(qq.length()>=5 && qq.length()<=10){ //符合第一个规则还要符合不能以0开头 if(!qq.startsWith("0")){ //这些QQ号码必须还数字的 //可以先将qq,转换成字符数字 char[] chs = qq.toCharArray() ; //遍历字符数组,获取每一个字符 for(int x = 0 ; x < chs.length ; x ++){ char ch = chs[x] ; //获取到每一个字符,判断该字符是否是数字 if(!Character.isDigit(ch)){ flag = false ; break ; }
我们用正则表达式的话,如下所示
/*//定义正则规则 //首位数字为1到9,后4位到后9位的数字为0到9 String regex = "[1-9][0-9]{4,9}" ; 判断正则表达式 //public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。 boolean flag = qq.matches(regex) ; return flag ;*/
正则表达式的简写 String regex = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,6}(\\.[a-zA-Z]{2,3})+" ; String regex = "\\w+@\\w{2,6}(\\.[a-zA-Z]{2,3})+" ;
由此看,正则表达式减少的代码量
String类的特有功能
public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串,返回值类型是一个字符串数组类型
public String replaceAll(String regex,String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
package day13_ZZbiaoda;import javax.print.DocFlavor.STRING;/** * @author Aoman_Hao */public class Regex_Demo { public static void main (String[] args){ String AA = "I thought RNG will win but it had lost!"; String blank_regex = " "; //语法:public String[] split(String regex) 切割 String[] word = AA.split(blank_regex); //循环输出 for (int i = 0; i < word.length; i++) System.out.println(word[i]); System.out.println("----------------------------"); String BB = "qwer1234qwer456"; String num_regex = "\\d";//0到9的简写 //语法:public String replaceAll(String regex,String replacement) 替换 String BB_replace = BB.replaceAll(num_regex, "+"); System.out.println("修改后:"+BB_replace); } }输出:IthoughtRNGwillwinbutithadlost!----------------------------修改后:qwer++++qwer+++
public static Pattern compile(String regex)将给定的正则表达式编译成一个模式对象
public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。 regex是自己定的正则表达式,使用方法:对象.matchs(regex)
package day13_ZZbiaoda;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * @author Aoman_Hao */public class Regex_Demo2 { public static void main(String[] args) { //获得模式对象 Pattern regex = Pattern.compile("we*"); //获取匹配器对象,返回boolean类型数据 Matcher m = regex.matcher("weeeeeeeeee"); boolean flag = m.matches(); System.out.println("flag:"+flag); //////////////////////////////////// String regex1 = "we*";//正则规则 String name = "weeeeee";//指定字符串 //调用matcher方法,返回boolean类型值 boolean flag2 = name.matches(regex1); System.out.println("flag2:"+flag2); }}输出:flag:trueflag2:true
- 正则表达式_小记
- 正则表达式学习小记
- 正则表达式小记(1)
- 正则表达式小记
- 正则表达式(小记)
- grep 正则表达式小记
- 正则表达式小记
- 正则表达式小记
- Java正则表达式小记
- 正则表达式 简单小记
- 正则表达式小记
- js正则表达式小记
- 正则表达式小记
- Lua正则表达式小记
- 正则表达式小记
- 【通用】正则表达式小记
- 关于Java 正则表达式小记
- python3使用正则表达式小记
- dataframe实践
- 当你纠结某个问题很难解决的时候,很可能是你的设计出了问题
- ActiveMq--03
- 2017.11.06
- java日期操作常见使用
- 正则表达式_小记
- Oracle修改字段类型方法总结
- [WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique
- javax.net.ssl.SSLException: Read error: ssl=0xdeae5100: I/O error during system call, Connection res
- 说说网站限时秒杀系统的架构设计
- CGLIB动态代理
- 关于Qt 静态成员函数调用信号
- 继承与多态
- 2017.11.03