专栏首页HUC思梦的java专栏基于java的正则表达式

基于java的正则表达式

正则表达式概念 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。正则表过式用于操作字符串数据。 String类里有一个方法 public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。 参数: regex - 用来匹配此字符串的正则表达式 返回: 当且仅当此字符串匹配给定的正则表达式时,返回 true 符号简介: \\匹配反斜线字符 \r匹配回车符 \t匹配制表符 \f匹配换页符 \n匹配换行符 [abc]匹配abc中的一个 [^abc]匹配除了abc中的一个 [a-z]匹配指定范围内的任意一个字符,例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。 [A-Z]匹配指定范围内的任意一个字符,例如,“[A-Z]”可以匹配“A”到“Z”范围内的任意大写字母字符。 [a-d[m-p]] 匹配[a-d m-p]并集 //abcd mnop中的一个 [a-z&&[^bc]]匹配[ad-z]范围内的任意字符//取a-z中的任意但不能取bc [a-z&&[^m-p]]匹配[a-l q-z]范围内的任意字符//取a-z中的任意但不能取mnop [a-z&&[def]]匹配def交集中的任意字符 . 匹配除“\r\n”之外的任何单个字符 \d 匹配一个数字字符。等价于[0-9] \D 匹配一个非数字字符。等价于[^0-9] \s 匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v] \S 匹配任何可见字符。等价于[^\f\n\r\t\v] \w 匹配单词字符:等价于[a-zA-Z_0-9] \W 匹配任何非单词字符。等价于[^A-Za-z0-9_] ^ 匹配输入字符串的开始位置 $ 匹配输入字符串的结束位置 \b 匹配一个单词边界 \B 匹配非单词边界 ? 匹配一次或一次没有 * 匹配0次或多次 + 匹配1次或多次 {n} 匹配恰好n次 {n,} 匹配至少n次 {n,m} 匹配至少n次,但不能超过m次匹配

(?i) 表示所在位置右侧的表达式开启忽略大小写模式 (?-i) 表示所在位置右侧的表达式关闭忽略大小写模式 \1 后向引用,表示表达式中,从左往右数,第一个左括号对应的括号内的内容。以此类推,\2表示第二个,\0表示整个表达式 使用String类中的matches方法 例子:匹配手机号码是否正确 public class RegDemo{ public static void main(String[] args) { String tel="13800001111"; String reg="1[358]\\d{9}"; //1[358][0-9]{9} boolean b=tel.matches(reg); System.out.println(tel+":"+b); } } 切割:使用String类中的split方法例子: 切割字符串 public class RegDemo{ public static void main(String[] args) { String str1="wang_yu_hang"; String str2="zhao fei "; String str3="tang.chun.lai"; String [ ] strarr1=str1.split("_"); String [ ] strarr2=str2.split(" +"); String [ ] strarr3=str3.split("\\."); for(String str:strarr1){ System.out.println(str); } } } 替换:使用String类中的replaceAll方法例子:替换字符串 public class RegDemo{ public static void main(String[] args) { String str="helloworld"; str=str.replaceAll("o","xx"); System.out.println(str); String ss = "tel12344556qq4564654add4646767"; ss= ss.replaceAll("\\d{4,}", "#"); //4个或4个以上的数字连在一起的换成# System.out.println(ss); } } 叠词替换:想要替换重复出现的单词,例如aa bbb cccc 任何的单词都有可能重复,所以使用 .(点)匹配任意字符.然后使用() 括号将该单词封装到组中. 为了重复使用某些规则就将规则封装为了组.使用()\1 1 是组号,\1引用了组.就是组中是什么这个位置也是什么.取值时,使用$1取第一个括号(组)中的值,以此类推。

获取: 其实使用的是java.util.regex.Pattern 类; java.util.regex.Matcher 类 Matcher类中的常用方法 : public boolean find() 尝试查找与该模式匹配的输入序列的下一个子序列。 public String group() 返回由以前匹配操作所匹配的输入子序列。 public int start() 返回以前匹配的初始索引。 public int end() 返回最后匹配字符之后的偏移量。 例子:获取字符串 public class RegDemo{ public static void main(String[] args){ Pattern p = Pattern.compile(“a*b”); //将正则表达式进行对象封装 Matcher m = p.matcher(“aaaaab”);//用正则表达式的方法matcher和字符串关联,获取对字符串操作的匹配对象 Matcher boolean b = m.matches();//通过Mather匹配器对象的方法对字符串进行操作 System.out.println(b); //匹配返回true,不匹配则返回false } }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SAX解析XML

    数据量大的xml建议使用SAX解析提高解析速度。SAX是Simple API for XML的缩写,它是事件驱动的,它并不需要读入整个文档,而文档的读入过程也就...

    HUC思梦
  • 设计模式--策略模式

    继承的问题:对类的局部改动,尤其超类的局部改动,会影响其他部分。影响会有溢出效应

    HUC思梦
  • redis命令和lua实现分布式锁

    因为这个命令的性质,多个线程竞争时只有一个线程能修改key的值。利用这一点可以实现锁的互斥功能。

    HUC思梦
  • Android 常用正则表达式

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/de...

    用户2965908
  • Java正则表达式

    描述:正则表达式 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。

    WeiyiGeek
  • 还不会正则表达式?看这篇!

    正则表达式是很多程序员,甚至是一些有了多年经验的开发者薄弱的一项技能。大家都很多时候都会觉得正则表达式难记、难学、难用,但不可否认的是正则表达式是一项很重要的技...

    Fundebug
  • 关于Spring属性处理器PropertyResolver以及应用运行环境Environment的深度分析,强大的StringValueResolver使用和解析【享学Spring】

    若直接提PropertyResolver或者StringValueResolver可能很小伙伴会觉得非常的陌生,但是我若提Environment和Embedde...

    YourBatman
  • RegularExpression

    layout: default title: RegularExpression category: [Technology, Java] comment...

    @坤的
  • 设计模式(四) | 简历复印与原型模型不得不说的一些事

    谭庆波
  • 正则简单使用说明

    何白白

扫码关注云+社区

领取腾讯云代金券