正则表达式在Java中使用

正则表达式

定义

用一组特殊的字符来描述一组字符串的格式
用于验证字符串是否满足格式
不关心字符串的内容是否有效

1. 基本正则表达式
所谓正则表达式就是使用一系列预定义的特殊字符来描述一个字符串的格式规则,然后使用该格式规则匹配某个字符串是否符合格式要求。
 “.”和"\"

"."点儿,在正则表达式中标是任意一个字符。
"\"在正则表达式中是转意字符,当我们需要描述一个已经被正则表达式使用的特殊字符时,我们就可以通过使用"\"将其转变为原本的意思。

    \\s 转译字符

"\"在正则表达式中也有一些预定义的特殊内容:
    \d:表示任意一个数字
    \w:表示任意一个单词字符(只能是 数字,字母,下划线)
    \s:表示任意一个空白字符(\t \r \n \f \x0B)
    \D:表示任意一个非数字字符
    \W:表示任意一个非单词字符
    \S:表示任意一个非空白字符

^"和"$"

通过在正则表达式的开始添加"^"以及末尾添加"$"来表示一个整体。若不使用它们,那么正则表达式只匹配某个字符串的部分内容是否符合格式规则,但使用它们,则要求字符串必须从头到尾都满足该格式规则。
例如:
^\w{ 8,10 }$ 表示整体字符串只能出现单词字符8-10个
"字符集合 []"

"[]"用来描述单一字符,方括号内部可以定义这个字符的内容,也可以描述一个范围。
例如:
[abc]:表示该字符只能是a或者b或者c
[123]:表示该字符只能是1或者2或者3
当我们需要描述所有小写字母是,我们可以使用范围
[a-z]:表示该字符可以是任意一个小写字母
同样还可以:
[0-9]:表示该字符可以是任意一个数字
也可以在多个范围内选择:
[a-zA-Z0-9_]:表示该字符可以是任意字母,数字以及"下划线"

"*"、"+"、"?"

通常我们需要描述的字符串会有很多重复出现的元素,但又不需要严格限制出现的次数时,我们就可以使用"*","+"这些量词。
例如:邮箱地址,那么在"@"字符前允许出现若干字符作为用户名。这时候我们就可以使用"\w+"来描述这里至少出现一个单词字符了。
"+":表示内容可以连续出现至少1次以上
"*":表示内容出现0-若干次
"?":表示内容出现0-1次
{n}、{n,}{n,m}

除了量词外,有时我们也需要要求内容出现的次数有具体要求。比如手机号码。这时我们要求出现的数字就不能是一个模糊的概念了,而必须要求11位。又比如我们要求用户输入密码时,要求密码是6-15位。遇到这类问题是,我们可以使用:
{n}:表示内容必须出现n次
{n,m}:表示内容出现n-m次
{n,}:表示内容出现至少n次
例如:
\d{11}:就表示数字只能出现11位,这样就解决了上述的问题。
 分组

通过上面的内容,我们还无法解决类似下面的问题:
在描述电话号码时,前面有区号,区号的形式可以是0086或者+86
那么我们如何在这两个字符串之间选择?
这时我们可以使用分组"()"
():可以将内容看做一个整体
()中可以使用"|"来表示或关系。例如:

(+86|0086):表示这里可以是+86或者0086。

\. 表示符号   .表示任意一个符号

String正则相关API

1. matches方法

matches()方法的参数要求我们传入一个用字符串描述的正则表达式,然后使用该正则表达式描述的字符串格式规则来匹配当前字符串,若满足那么该方法返回true。否则返回false.

^[0-9]{5,8}&
java 中 string的方法match 就是全匹配,不写^$也是可以的

2. split方法

String[] split(String regex):参数要求传入一个用字符串描述的正则表达式,然后使用该正则表达式描述的字符串规则来匹配当前字符串,并按照满足的部分将字符串拆分。

 1 案例一
 2
 3 /**
 4          * 切割字符串 当字符串中最后的内容练习满足正则表达式要求时 切除的空字符串全部忽略
 5          */
 6         String str2 = "java.cpp.php.py.c#";
 7         String[] array = str2.split("\\.");
 8         System.out.println(array.length);
 9         System.out.println(Arrays.toString(array));
10     }
11 }
案例二

        /**
         *1. 将图片名根据.拆分
         *2.取第二项(后缀名)
         *3.生成系统时间的毫秒值,拼上后缀
         *
         */
        String imgName = "11.jpg";
        String[] names = imgName.split("\\.");
        String ln =names[1];
        imgName=System.currentTimeMillis()+"."+ln; //系统时间
        System.out.println(imgName);

    }

3. replaceAll方法
满足则替换
String replaceAll(String regex,String replacement):参数要求传入一个用字符串描述的正则表达式和一个需要替换的字符串,然后使用该正则表达式描述的字符串规则来匹配当前字符串,并将满足的部分替换为需要替换的这个字符串。

    String str3 ="abc123cef8df77";
        str3 =str3.replaceAll("\\d+", "数字");
        System.out.println(str3);

和谐脏话

        String regex1 = "(sb|qnmlgb|cnm|tmd)";
         String message ="你个sb!怎么操作!tnnd";
         message = message.replaceAll(regex1, "***");
         System.out.println(message);
时间: 2024-10-08 08:21:55

正则表达式在Java中使用的相关文章

用正则表达式得到Java中所有的关键字

在一个Java应用程序中,我们可以用正则表达式可以得到所有的java关键字.那么关键就是正确地使用词边界.例如:在"static staticField"这个字符串当中,第一个单词应该被当作关键字识别,但是第二个不能. 这是得到Java程序关键字的代码: package hxl.programmer.path; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.common

利用正则表达式判断Java中的秒钟、分钟、小时、日、月是否符合规则

// 定义校验规则 Pattern patRule = Pattern.compile("判断规则"); // 校验结果 patRule.matcher("判断的对象").matches(); 1.秒钟.分钟.小时判断规则 String smh = "([0-9]|[1-5][0-9]|59)"; 2.日校验规则 String dayRule= "([1-9]|[1-2][2-9]|[1-3][0-1])"; 3.月校验规则

java 中的正则表达式

一. 什么是正则表达式? 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”).模式描述在搜索文本时要匹配的一个或多个字符串. 二.正则表达式语法参考: https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx.    三.  正则表达式规则的例子: /^(/d{3}-|/d{4}-)?(/d{8}|/d{7})?$/    //国内电话 /^[1-9]*[1-9][0-9]*$/  

java中 正则表达式的使用

推荐使用第一种 第一种: //对接收的文件名的合法性进行验证 String fileName="127.0.0.1_01_20140428165022174.jpg"; String regEx = "\\b.+_\\d+_\\d{17}\\b"; //正则表达式 Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(fileName); if(!m.find()){ SysLog.logger.erro

9.JAVA中的正则表达式

一.JAVA中的正则表达式 1.概念:以某种特定的方式描述字符串 1.Java中正则表达式的规则 ?          #{0,1}-?有一个-或者没有 \\           #表示一个”\" \\d         #表示一个数字 \\D       #非数字 f\\W+    #表示f开头的单词 \\W       #表示一个非单词字符 \\w       #表示一个单词字符[0-9A-Za-z-]包含’-’ \\s        #空白符号 \\S       #非空白符号 (-|\\

Java中正则表达式的使用(常用的方法)

这两天回想了一下正则表达式的使用,顺便就总结了一下java的javascript中使用正则表达式的用法,需要看javascript中使用正则的朋友可以看我的另一篇总结,下面我就简单的介绍一下java中正则表达式的使用.方便自己以后查询使用,也希望能帮助到大家.===欢迎指正=== 在JDK1.3及之前的JDK版本中并没有包含正则表达式的类,如果要在Java中使用正则表达式必须使用第三方提供的正则表达式库.从JDK1.4开始提供了支持正则表达式API,它们位于java.util.regex包中.

JAVA中的正则表达式--待续

1.关于“\”,在JAVA中的正则表达式中的不同: 在其他语言中"\\"表示为:我想要在正则表达式中插入一个普通的反斜杠: 在Java中“\\”表示为:我想要插入一个正则表达式反斜杠: eg:验证整数的正则表达式为\\d; 如果想要插入一个反斜杠则为:\\\\ : 如果是换行符和制表符则为\n 和\t : 2.特殊字符 Greedy 数量词 X? X,一次或一次也没有 X* X,零次或多次 X+ X,一次或多次 X{n} X,恰好 n 次 X{n,} X,至少 n 次 X{n,m} X

Java使用正则表达式取网页中的一段内容(以取Js方法为例)

关于正则表达式: 表1.常用的元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 表2.常用的限定符 代码/语法 说明 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 表3.常用的反义代码 代码/语法 说明 \W 匹配任意不是字母,数字,下划线,汉字的字符 \S

正则表达式基本概念及在java中的使用

正则表达式,我是从why,what,how开始探索的... why:正则表达式用“俗语”解释是什么意思?“历史”上发生了什么事情,让正则表达式诞生了? what:正则表达式具体内容是什么?包含什么定义?这些定义分别用来做什么? how:我在用java,那么正则表达式和java又是怎么联系起来的呢? 伴随着这些问题的解决,对正则表达式有了初步的理解,习惯性用脑图将这些内容整理,希望和大家一起沟通,互相进步~ 正则表达式基本概念及在java中的使用,布布扣,bubuko.com