java中正则表达式实例详解

Java中正则表达式运用实例(参看java中正则表达式运用详解):

测试代码

package test;
/**
 * 在String的matches()方法,split()方法中使用正则表达式.
 * @author fhd001
 */
public class RegexTest { 

  public static void main(String[] args) { 

    /*
     * 普通字符
     */
    String str1 = "abc45abc345";
    String[]arr1 = str1.split("abc");
    for (String string : arr1) {
      System.out.print(string+"-->");
    }
    System.out.println(); 

    /*
     * 简单的转义字符
     * 在java中转义字符时一定要用双反斜线,两个斜线转义成一个斜线,
     * 在用这个斜线字符转义那些特殊字符.
     */
    String str2 = "^$()[]{}.?+*|";
    boolean flag = str2.matches("//^//$//(//)//[//]//{//}//.//?//+//*//|");
    System.out.println(flag); 

    /*
     * 转义字符 /Q.../E.
     */
    String str3 = "^$()[]{}.?+*|99999";
    boolean flag2 = str3.matches("//Q^$()[]{}.?+*|//E//d{5}");
    System.out.println(flag2); 

    /*
     * 字符集合
     */
    String str4 = "dfddri334";
    boolean flag4 = str4.matches(".+");
    System.out.println(flag4); 

    String str5 = "#$%^*())%";
    boolean flag5 = str5.matches("//W{9}");
    System.out.println(flag5); 

    String str6 = "4gffmdkekrhhr";
    boolean flag6 = str6.matches("//w+");
    System.out.println(flag6); 

    String str7 = "fjfdke  eett ";
    boolean flag7 = str7.matches("//w+//s+//w{4}//s?");
    System.out.println(flag7); 

    String str8 = "  erefff  ";
    boolean flag8 = str8.matches("//s+//S+//s+");
    System.out.println(flag8); 

    String str9 = "456776888";
    boolean flag9 = str9.matches("//d+");
    System.out.println(flag9); 

    String str10 = "rtydfgrgwvr ";
    boolean flag10 = str10.matches("//D+");
    System.out.println(flag10); 

    /*
     * 自定义字符集合 [ ]
     */
    String str11 = "fdfeetg 34566";
    boolean flag11 = str11.matches("[fdetg]+//s+[3-6]+");
    System.out.println(flag11); 

    String str12 = "rtyuie  5768";
    boolean flag12 = str12.matches("[^abcdf]+//s+[^1234]+");
    System.out.println(flag12); 

    /*
     * 匹配次数限定符
     */ 

    //贪婪模式
    String str13 = "ytreggcv454444444333";
    boolean flag13 = str13.matches("//w{20}");
    System.out.println(flag13); 

    boolean flag14 = str13.matches("//w{10,21}");
    System.out.println(flag14); 

    boolean flag15 = str13.matches("//w{18,}");
    System.out.println(flag15); 

    String str14 = "4";
    boolean flag16 = str14.matches("//d?");
    System.out.println(flag16); 

    String str15 = "ddcvgt";
    boolean flag17 = str15.matches("//D+//d?");
    System.out.println(flag17); 

    String str16 = "e33tf44t44t";
    boolean flag18 = str16.matches("//w+//W*");
    System.out.println(flag18); 

    //勉强模式(只举一例)
    String str17 = "34567ghjkkld";
    boolean flag19 = str17.matches("//d{2,7}?//w{8,11}");
    System.out.println(flag19); 

    //占有模式(只举一例)
    String str18 = "22222ddddd";
    boolean flag20 = str18.matches("//d{2,5}+//w{6}");
    System.out.println(flag20); 

    /*
     * 字符边界
     */
    String str19 = "a444545rot44tm";
    boolean flag21 = str19.matches("^a//w+m$");
    System.out.println(flag21); 

    /*
     * 选择表达式 xxx | xxx
     */
    String str20 = "abc123abc";
    boolean flag22 = str20.matches("(abc|123){3}");
    System.out.println(flag22); 

    /*
     * 分组 ( ).
     * 以上修饰符都是针对一个字符进行修饰.如果要对一组字符进行
     * 修饰就要用到()
     */
    String str21 = "123qwe123qwe";
    boolean flag23 = str21.matches("(123qwe){2}");
    System.out.println(flag23); 

    /*
     * []中的交集与并集
     */
    String str22 = "abcdefgh1234567";
    boolean flag24 = str22.matches("[a-z1-9]+");    //并集
    System.out.println(flag24); 

    boolean flag25 = str22.matches("[a-z1-9&&[a-h1-7]]+"); //交集
    System.out.println(flag25);
  }
}

结果代码

-->45-->345-->
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
false
true
true
true
true
true

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2017-04-12

Java正则表达式判断字符串中是否包含中文示例

前言 在日常开发编程中,我们有时从用户那里得到一些输入信息,对于特定应用,部分信息不允许包含中文字符,那如何检测信息字符串中是否包含中文字符呢? 方法有很多,这篇文章就介绍一下如何通过正则表达式来实现这个需求. 示例代码 package cn.sunzn.demo; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Demo { public static void main(String[]

java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】

本文实例讲述了java正则表达式实现提取需要的字符并放入数组.分享给大家供大家参考,具体如下: 这里演示Java正则表达式提取需要的字符并放入数组,即ArrayList数组去重复功能. 具体代码如下: package com.test.tool; import java.util.ArrayList; import java.util.HashSet; import java.util.regex.*; public class MatchTest { public static void ma

Java基于正则表达式实现查找匹配的文本功能【经典实例】

本文实例讲述了Java基于正则表达式实现查找匹配的文本功能.分享给大家供大家参考,具体如下: REMatch.java: package reMatch; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by Frank */ public class REMatch { public static void main(String[] args) { String patt = "Q[^

Java中正则表达式去除html标签

Java中正则表达式去除html的标签,主要目的更精确的显示内容,比如前一段时间在做类似于博客中发布文章功能,当编辑器中输入内容后会将样式标签也传入后台并且保存数据库,但是在显示摘要的时候,比如显示正文的前50字作为摘要,那么这时需要去除所有html标签,然后在截取50字,所以就通过了Java正则表达式实现了如下方法,代码如下: 注:这是Java正则表达式去除html标签方法. private static final String regEx_script = "<script[^>

Java基于正则表达式获取指定HTML标签指定属性值的方法

本文实例讲述了Java基于正则表达式获取指定HTML标签指定属性值的方法.分享给大家供大家参考,具体如下: 有时可能会有这样的需求,从HTML页面获取指定标签的指定属性值,可以通过第三方库解析来获取,但是这样相对比较麻烦! 如果使用正则表达式,那么就变得简单了.代码如下: package com.mmq.regex; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import

Java正则表达式处理特殊字符转义的方法

正则需要转义字符 '$', '(', ')', '*', '+', '.', '[', ']', '?', '\\', '^', '{', '}', '|' 异常现象: java.util.regex.PatternSyntaxException: Dangling meta. character '*' near index 0 解决方法 对特殊字符加\\转义即可. 注意:虽然使用[]在部分条件下也可以,但是在对于(.[.{范围边界开始符不匹配的情况下会报如下: 异常现象 java.util.

Java正则表达式之split()方法实例详解

本文实例讲述了Java正则表达式之split()方法.分享给大家供大家参考,具体如下: 1.方法介绍 (1)public String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串 (2)public String[] split(String regex,int limit) 根据匹配给定的正则表达式来拆分此字符串 2.方法实例 /** * @Title:Split.java * @Package:com.you.data * @Description:Ja

Java正则表达式实现在文本中匹配查找换行符的方法【经典实例】

本文实例讲述了Java正则表达式实现在文本中匹配查找换行符的方法.分享给大家供大家参考,具体如下: 默认情况下,正则表达式 ^ 和 $ 忽略行结束符,仅分别与整个输入序列的开头和结尾匹配.如果激活 MULTILINE 模式,则 ^ 在输入的开头和行结束符之后(输入的结尾)才发生匹配.处于 MULTILINE 模式中时,$ 仅在行结束符之前或输入序列的结尾处匹配. NLMatch.java: package nlMatch; import java.util.regex.Pattern; /**

Java基于正则表达式实现的替换匹配文本功能【经典实例】

本文实例讲述了Java基于正则表达式实现的替换匹配文本功能.分享给大家供大家参考,具体如下: package replaceDemo; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by Frank * 替换匹配的文本 */ public class ReplaceDemo { public static void main(String[] args) { // 创建一个正则表达式模式

java使用正则表达式查找包含的字符串示例

本文实例讲述了java使用正则表达式查找包含的字符串.分享给大家供大家参考,具体如下: Hello.java: package hello; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Hello { public static void main(String[] args) { String re = "\\[([^\\]]+)\\]"; String str = &quo

在python中使用正则表达式查找可嵌套字符串组

在网上看到一个小需求,需要用正则表达式来处理.原需求如下: 找出文本中包含"因为--所以"的句子,并以两个词为中心对齐输出前后3个字,中间全输出,如果"因为"和"所以"中间还存在"因为""所以",也要找出来,另算一行,输出格式为: 行号 前面3个字 *因为* 全部 &所以& 后面3个字(标点符号算一个字) 2 还不是 *因为* 这里好, &所以& 没有人 实现方法如下: #e

java使用正则表达式判断手机号的方法示例

本文实例讲述了java使用正则表达式判断手机号的方法.分享给大家供大家参考,具体如下: 要更加准确的匹配手机号码只匹配11位数字是不够的,比如说就没有以144开始的号码段, 故先要整清楚现在已经开放了多少个号码段,国家号码段分配如下: 移动:134.135.136.137.138.139.150.151.157(TD).158.159.187.188 联通:130.131.132.152.155.156.185.186 电信:133.153.180.189.(1349卫通) 那么现在就可以正则匹

正则表达式不包含属性

找出所有img标签的,没有带说明属性alt的标签: 正则:<img(?![^<>]*?alt[^<>]*?>).*?> 例子:<img src="" alt=""> <img src="" >  <img src="" title="">  <img src="" id=""> 

Java通过正则表达式获取字符串中数字的方法示例

前言 本文通过一个小范例来学习java中通过正则表达式如何获得一个字符串中的数字,下面话不多说,来看看详细的介绍吧. 示例代码如下: import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { public static void main(String[] args) { String strInput = "3a7s10@5d2a6s17s56;33"; String reg

java查找字符串中的包含子字符串的个数实现代码

1. 用indexof的方法: public class Test11 { private static int counter = 0; /** * @param args */ public static void main(String[] args) { String str ="sdSS**&HGJhadHCASch& ^^"; int i = stringNumbers(str); System.out.println(i); } public static

Java使用正则表达式截取重复出现的XML字符串功能示例

本文实例讲述了Java使用正则表达式截取重复出现的XML字符串功能.分享给大家供大家参考,具体如下: public static void main(String[] args) throws DocumentException { String s = "<MTCCommand Time=\"2014-03-22\"><Login UserId=\"admin\" UserPasswd=\"123\" />&l

正则表达式匹配不包含某些字符串的技巧

经常我们会遇到想找出不包含某个字符串的文本,程序员最容易想到的是在正则表达式里使用,^(hede)来过滤"hede"字串,但这种写法是错误的.我们可以这样写:[^hede],但这样的正则表达式完全是另外一个意思,它的意思是字符串里不能包含'h','e','d'三个但字符.那什么样的正则表达式能过滤出不包含完整"hello"字串的信息呢? 事实上,说正则表达式里不支持逆向匹配并不是百分之百的正确.就像这个问题,我们就可以使用否定式查找来模拟出逆向匹配,从而解决我们的问

Python使用中文正则表达式匹配指定中文字符串的方法示例

本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法.分享给大家供大家参考,具体如下: 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理. 往往一个具有普适性的正则表达式会简化程序和代码的处理,使过程简洁和事半功倍,这往往是高手和菜鸟最显著的差别.

使用正则表达式找出不包含特定字符串的条目

做日志分析工作的经常需要跟成千上万的日志条目打交道,为了在庞大的数据量中找到特定模式的数据,常常需要编写很多复杂的正则表达式.例如枚举出日志文件中不包含某个特定字符串的条目,找出不以某个特定字符串打头的条目,等等. 使用否定式前瞻 正则表达式中有前瞻(Lookahead)和后顾(Lookbehind)的概念,这两个术语非常形象的描述了正则引擎的匹配行为.需要注意一点,正则表达式中的前和后和我们一般理解的前后有点不同.一段文本,我们一般习惯把文本开头的方向称作"前面",文本末尾方向称为&