Java 正则表达式的使用

1:正则表达式语法大全

字符

说明

\

将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,"n"匹配字符"n"。"\n"匹配换行符。序列"\\"匹配"\","\("匹配"("。转义

^

在中括号里面和外面含义不同,如在外时,就表示开头,如^7[0-9]表示匹配开头是7的,且第二位是任一数字的字符串;如果在中括号里面,表示除了这个字符之外的任意字符(包括数字,特殊字符),如[^abc]表示匹配出去abc之外的其他任一字符。

$

匹配字符串结尾的位置

*

零次或多次匹配前面的字符或子表达式

+

一次或多次匹配前面的字符或子表达式。例如,"zo+"与"zo"和"zoo"匹配,但与"z"不匹配。+ 等效于 {1,}。

?

零次或一次匹配前面的字符或子表达式。例如,"do(es)?"匹配"do"或"does"中的"do"。? 等效于 {0,1}。

{n}

n是非负整数。正好匹配 n 次。例如,"o{2}"与"Bob"中的"o"不匹配,但与"food"中的两个"o"匹配。

{n,}

n是非负整数。至少匹配 n次。例如,"o{2,}"不匹配"Bob"中的"o",而匹配"foooood"中的所有 o。"o{1,}"等效于"o+"。"o{0,}"等效于"o*"。

{n,m}

M 和 n 是非负整数,其中 n <= m。匹配至少 n 次,至多 m 次。例如,"o{1,3}"匹配"fooooood"中的头三个 o。'o{0,1}' 等效于 'o?'。注意:您不能将空格插入逗号和数字之间。

.

匹配除"\r\n"之外的任何单个字符。若要匹配包括"\r\n"在内的任意字符,请使用诸如"[\s\S]"之类的模式。

x|y

匹配 x 或 y。例如,'z|food' 匹配"z"或"food"。'(z|f)ood' 匹配"zood"或"food"。

[xyz]

字符集。匹配包含的任一字符。例如,"[abc]"匹配"plain"中的"a"。

[^xyz]

反向字符集。匹配未包含的任何字符。例如,"[^abc]"匹配"plain"中"p","l","i","n"。

[a-z]

字符范围。匹配指定范围内的任何字符。例如,"[a-z]"匹配"a"到"z"范围内的任何小写字母。

[^a-z]

反向范围字符。匹配不在指定的范围内的任何字符。例如,"[^a-z]"匹配任何不在"a"到"z"范围内的任何字符

\b

匹配一个字边界,即字与空格间的位置。例如,"er\b"匹配"never"中的"er",但不匹配"verb"中的"er"

\B

非字边界匹配。"er\B"匹配"verb"中的"er",但不匹配"never"中的"er"。

\d

数字字符匹配。等效于 [0-9]。

\D

非数字字符匹配。等效于 [^0-9]。

\w

匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等效。

\W

与任何非单词字符匹配。与"[^A-Za-z0-9_]"等效。

[]

代表匹配中括号中其中任一个字符,如[abc]匹配a或b或c

|

相当与“或”,可以匹配指定的字符,但是也只能选择其中一项进行匹配。表达式:t(a|b|c|dd)n 只可以匹配:tan,tbn,tcn,tddn。不可以匹配taan,tn,tabcn

常用的正则表达式:

(1)"^\d+$"  //非负整数(正整数 + 0)

(2)"^[0-9]*[1-9][0-9]*$"  //正整数

(3)"^((-\d+)|(0+))$"  //非正整数(负整数 + 0)

(4)"^-[0-9]*[1-9][0-9]*$"  //负整数

(5)"^-?\d+$"    //整数

(6)"^\d+(\.\d+)?$"  //非负浮点数(正浮点数 + 0)

(7)"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数

(8)"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"  //非正浮点数(负浮点数 + 0)

(9)"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数

(10)"^(-?\d+)(\.\d+)?$"  //浮点数

(11)"^[A-Za-z]+$"  //由26个英文字母组成的字符串

(12)"^[A-Z]+$"  //由26个英文字母的大写组成的字符串

(13)"^[a-z]+$"  //由26个英文字母的小写组成的字符串

(14)"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串

(15)"^\w+$"  //由数字、26个英文字母或者下划线组成的字符串

(16)"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"    //email地址

(17)"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"  //url

(18)/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ //年-月-日

(19)/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ //月/日/年

(20)"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil

(21)/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ //电话号码

(22)"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址

(23)

(24)匹配中文字符的正则表达式: [\u4e00-\u9fa5]

(26)匹配空行的正则表达式:\n[\s| ]*\r

(27)匹配HTML标记的正则表达式:/.*|/(28)匹配首尾空格的正则表达式:(^\s*)|(\s*$)

(29)匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(30)匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$

(31)匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

(32)匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?(33)匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$

(34)邮政编码:^[1-9]\d{5}$

(35)电话号码:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$

手机号码:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$

(36) 匹配IP地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //(37) sql语句:^(select|drop|delete|create|update|insert).*$

java.util.regex 包主要包括以下三个类:

Pattern 类:

pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。

Matcher 类:

Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。

PatternSyntaxException:

PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。

以下实例中使用了正则表达式.*runoob.*用于查找字符串中是否包含了runoob子串:

1 package cc.bcy;

2

3 import java.util.regex.*;

4

5 public class RegexExample

6 {

7 public static void main(String[] args)

8 {

9 String content="I am noob from runoob.com";

10 String pattern=".*runoob.*";

11 boolean isMatch=Pattern.matches(pattern, content);

12 System.out.println("字符串中是否包含了‘runoob’子字符串?"+isMatch);

13 }

14 }

15 /*

16 字符串中是否包含了‘runoob’子字符串?true

17 */

捕获组:

捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。可以通过调用 matcher 对象的 groupCount 方法来查看表达式有多少个分组。groupCount 方法返回一个 int 值,表示matcher对象当前有多个捕获组。

还有一个特殊的组(group(0)),它总是代表整个表达式。该组不包括在 groupCount 的返回值中。

1 package cc.bcy;

2

3 import java.util.regex.*;

4

5 public class RegexExample

6 {

7 public static void main(String[] args)

8 {

9 String line="This order was placed for QT3000! OK?";

10 String pattern="(\\D*)(\\d+)(.*)";

11 //创建Pattern对象

12 Pattern p=Pattern.compile(pattern);

13 //创建Matcher对象

14 Matcher m=p.matcher(line);

15 if(m.find())

16 {

17 System.out.println("Found value: "+m.group(0));

18 System.out.println("Found value: "+m.group(1));

19 System.out.println("Found value: "+m.group(2));

20 System.out.println("Found value: "+m.group(3));

21 }

22 else

23 {

24 System.out.println("No Match!");

25 }

26 int n=m.groupCount();

27 System.out.println("一共有"+n+"个捕获组");

28 }

29 }

30 /*

31 Found value: This order was placed for QT3000! OK?

32 Found value: This order was placed for QT

33 Found value: 3000

34 Found value: ! OK?

35 一共有3个捕获组

36 */

java正则表达式的用法_Java 正则表达式的使用相关推荐

  1. java regex match 替换_java正则表达式四种常用的处理方式(匹配、分割、替代、获取)...

    java 正则表达式高级篇,介绍四种常用的处理方式:匹配.分割.替代.获取,具体内容如下 package test; import java.util.regex.Matcher; import ja ...

  2. java 数字范围正则_Java 正则表达式

    正则表达式 概述 正则表达式定义了字符串的模式.正则表达式可以用来搜索.编辑或处理文本.正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. java.util.regex 包主要包括以下三 ...

  3. java qq验证手机号码_java正则表达式表单验证类工具类(验证邮箱、手机号码、qq号码等)...

    package util; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 使用正则表达式进行表单验证 * ...

  4. java中replaceall用法_java中replaceall的用法

    JAVA中string.replace和string.replaceAll的区别及 替换方式不同 [public String replace( )] 是通过用 newChar 替换此字符串中出现的所 ...

  5. java中extends用法_JAVA的extends用法

    理解继承是理解面向对象程序设计的关键.在Java中,通过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类).在Java中不允许多继承. (1)继承 cla ...

  6. cal java中的用法_Java中static用法

    Java中static用法 转自 http://blog.pfan.cn/sword2008/13772.html 一.static 请先看下面这段程序: public class Hello{ pu ...

  7. java正则表达式爬图片_Java正则表达式爬取网页,贴出完整代码

    import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.ope ...

  8. java正则表达式 匹配%号_java正则表达式匹配带有括号的电话号为什么匹配不上...

    最近在学习正则表达式,尝试着同事匹配三种不同的电话号,类似如下: (012)-79461234 012-79461234 01279461234 我写的匹配方式: \(?0\d{2}[) -]?\d{ ...

  9. java正则表达式的使用_java正则表达式使用

    用正则表达式进行字符串校验,截取十分方便,项目开发中灵活的使用正则表达式能让你的代码简洁优雅并且不易出错.在实际的应用中,掌握以下几点知识就可以应付绝大多数的开发场景了. 1. 字符串开始结束匹配:^ ...

最新文章

  1. android 模块不编译错误,Android 编译出错版本匹配问题解决办法
  2. python元编程_Python 元编程
  3. 2008matlab error 95,VS2008和MATLAB2010b混合编程有关问题 error LINK2028 恳请指教!(2)
  4. [网络安全自学篇] 五十八.Windows安全缺陷利用之再看CVE-2019-0708及反弹shell防御措施
  5. Statement和PreparedStatement深入学习总结
  6. 可用性测试(用户体验)测试
  7. CCF201412-4 最优灌溉(解法二)(100分)【废除!!!】
  8. MyBatis自动生成步骤
  9. Python—— 文件和数据格式化(模块6: wordcloud库的使用)(实例:自动轨迹绘制政府工作报告词云)
  10. 第48次《中国互联网络发展状况统计报告》发布--报告解读
  11. TI C64X+通用库函数使用手册
  12. 阿里云MVP精选2018年终盘点:大咖专访+最佳实践,丰富干货等你来!
  13. 网页外挂技术浅谈(入门篇)
  14. AWE /3GB 内存扩展技术
  15. huskar与hsf
  16. 5G网络优化工程师是做什么的?4大工作职责!
  17. ue4 vr连接_基于UE4的VR项目基础环境配置和Motion Controller控制配置
  18. r7 5800x配什么主板和显卡
  19. codeup27943 星号实心六边形
  20. java将十进制数字转换成二进制

热门文章

  1. linux中sed深入,Linux中的sed
  2. R语言dataframe创建新的特征(变量)、行加和特征、行均值特征(基于加减乘除、指数、模数等操作符)、创建新的特征(变量)、生成编码特征(基于比较操作符、逻辑操作符)
  3. R语言glmnet交叉验证选择(alpha、lambda)拟合最优elastic回归模型:弹性网络(elasticNet)模型选择最优的alpha值、模型最优的lambda值,最终模型的拟合与评估
  4. pandas基于时序数据计算模型预测推理需要的统计数据(累计时间、长度变化、变化率、方差、均值、最大、最小等):数据持续的时间(分钟)、获得某一节点之后的数据总变化量、获得范围内的统计量
  5. R使用热力图(heatmap)可视化数据集
  6. 机器学习中过拟合、欠拟合与方差、偏差的关系是什么?
  7. edgeR基因表达差异分析
  8. ajax报403错,django使用ajax post数据出现403错误如何解决
  9. java jaxb 集合_java.util.List是一个接口,JAXB不能处理接口
  10. mysql存储过程 delete select insert_mysql常见操作语句,建表,增删改查