JAVA正则表达式语法

合集下载

java contains 正则

java contains 正则

java contains 正则Java中的contains方法和正则表达式简介•Java中的contains方法是用于判断一个字符串是否包含另一个字符串的方法。

•正则表达式是一种用于匹配和解析字符串的强大工具。

contains方法的基本用法•contains方法是String类的方法,可以用来判断一个字符串是否包含指定的字符序列。

•语法:boolean contains(CharSequence sequence)•示例:–String str = "Hello World!";–boolean result = ("Hello"); // true–boolean result = ("Java"); // falsecontains方法的局限性•contains方法在判断字符串是否包含指定字符序列时,只能判断最基本的情况。

•无法处理复杂的模式匹配和匹配规则。

正则表达式的基本概念•正则表达式是一种用来描述和匹配字符串的模式。

•通过使用特殊字符和操作符,可以定义需要匹配的字符串模式。

•语法:(String regex)•示例:–String pattern = "a*b";–boolean result =(pattern).matcher("aaaab").matches(); // true –boolean result =(pattern).matcher("aab").matches(); // false正则表达式的常用操作符•.:匹配除换行符以外的任意字符。

•*:匹配前面的字符零次或多次。

•+:匹配前面的字符一次或多次。

•?:匹配前面的字符零次或一次。

•[ ]:匹配括号内的任意一个字符。

•{n}:匹配前面的字符恰好出现n次。

•{n,}:匹配前面的字符至少出现n次。

java 字母数字正则

java 字母数字正则

java 字母数字正则摘要:1.Java 正则表达式简介2.字母数字正则表达式语法3.字母数字正则表达式示例4.Java 中使用正则表达式的方法5.总结正文:1.Java 正则表达式简介在Java 编程中,正则表达式是一种用于处理字符串的强大工具。

通过正则表达式,我们可以轻松地查找、替换、验证等操作字符串,满足各种复杂的业务需求。

2.字母数字正则表达式语法字母数字正则表达式用于匹配只包含字母和数字的字符串。

它的语法如下:```^[a-zA-Z0-9]+$```其中,`^` 表示字符串的开始,`$` 表示字符串的结束。

`[a-zA-Z0-9]` 表示一个字母或数字,`+` 表示前面的字符可以出现一次或多次。

3.字母数字正则表达式示例假设我们有一个字符串`input`,我们想要判断它是否只包含字母和数字。

可以使用以下代码:```javaString regex = "^[a-zA-Z0-9]+$";boolean isValid = input.matches(regex);System.out.println("字符串是否只包含字母和数字:" + isValid);```4.Java 中使用正则表达式的方法在Java 中,可以使用`Pattern` 和`Matcher` 类来操作正则表达式。

以下是一些常用的方法:- `pile(regex)`:编译正则表达式,返回一个`Pattern` 对象。

- `Pattern.matcher(string)`:创建一个`Matcher` 对象,用于匹配给定的字符串。

- `matches()`:判断字符串是否完全匹配正则表达式。

- `find()`:查找字符串中是否存在与正则表达式匹配的子串。

- `replaceAll(replacement)`:替换字符串中所有与正则表达式匹配的子串。

5.总结字母数字正则表达式是Java 中一种常用的正则表达式,用于匹配只包含字母和数字的字符串。

java 域名正则

java 域名正则

java 域名正则
在Java中,可以使用`java.util.regex`包提供的正则表达式类来进行匹配。

下面是一些常用的正则表达式语法:
- `.`:匹配任意字符。

- `\w`:匹配字母、数字、下划线。

- `\d`:匹配数字。

- `(abc)`:匹配字符`a`、`b`或`c`。

- `(a-z)`:匹配小写字母。

- `*`:匹配前面的字符0次或多次。

- `+`:匹配前面的字符1次或多次。

- `?`:匹配前面的字符0次或1次。

- `{n}`:匹配前面的字符n次。

- `{n,}`:匹配前面的字符至少n次。

- `{n,m}`:匹配前面的字符至少n次,最多m次。

- `^`:匹配字符串的开始位置。

- `$`:匹配字符串的结束位置。

- `|`:匹配左右两边的字符之一。

在使用正则表达式时,需要根据具体的需求和情况来选择合适的表达式。

如果你还需要了解关于Java域名正则的更多内容,请补充相关信息后再次提问。

java 数字 正则

java 数字 正则

java 数字正则Java中的数字正则表达式是一种用于匹配和验证数字的工具。

在Java中,使用正则表达式可以轻松地匹配各种数字模式,例如整数、小数、科学计数法等。

本文将介绍如何在Java中使用数字正则表达式,并提供一些常见的示例和用法。

我们需要了解一些基本的正则表达式语法。

在Java中,可以使用`\d`表示任意一个数字字符,使用`\D`表示任意一个非数字字符。

可以使用`[0-9]`表示一个数字字符,`[^0-9]`表示一个非数字字符。

此外,还可以使用一些特殊字符来匹配特定的数字模式,例如`\s`表示空白字符,`\S`表示非空白字符,`\w`表示单词字符,`\W`表示非单词字符等。

接下来,我们将通过一些示例来演示如何使用数字正则表达式。

假设我们有一个字符串,其中包含一些数字,我们想要提取出这些数字并进行处理。

首先,我们可以使用`Pattern`类和`Matcher`类来创建一个数字正则表达式的模式,并将其应用于我们的字符串。

例如,假设我们有一个字符串`"Today is the 10th day of the month."`,我们想要提取出其中的数字`10`。

我们可以使用以下代码来实现:```javaString str = "Today is the 10th day of the month.";Pattern pattern = pile("\\d+");Matcher matcher = pattern.matcher(str);if (matcher.find()) {String number = matcher.group();System.out.println("The number is: " + number);}```运行上述代码,我们将得到输出结果`The number is: 10`。

这说明我们成功地从字符串中提取出了数字`10`。

java 百分比正则表达式

java 百分比正则表达式

java 百分比正则表达式Java百分比正则表达式正则表达式是一种强大的工具,用于在字符串中匹配、查找和替换特定的文本模式。

在Java中,正则表达式的使用非常广泛,可以应用于各种场景,包括验证输入、提取数据等。

本文将重点介绍Java 中的百分比正则表达式的使用。

一、百分比正则表达式的基本语法在Java中,可以使用正则表达式来匹配百分比格式的字符串。

百分比的格式通常为一个数字加上百分号,例如"50%"。

下面是一个简单的百分比正则表达式的基本语法:```javaString regex = "\\d+(\\.\\d+)?%";```其中,"\\"用于转义"\","\d"表示一个数字,"+"表示前面的字符出现一次或多次,"\\."表示一个点号,"?"表示前面的字符出现零次或一次,"%"表示百分号。

二、百分比正则表达式的使用方法使用百分比正则表达式的方法有很多,下面将介绍几个常见的应用场景。

1. 验证输入是否为合法的百分比在用户输入百分比时,我们可以使用正则表达式来验证输入是否合法。

例如,我们可以编写一个方法来判断一个字符串是否为合法的百分比:```javapublic static boolean isValidPercentage(String input) {String regex = "\\d+(\\.\\d+)?%";return input.matches(regex);}```该方法使用String的matches方法来判断输入字符串是否匹配给定的正则表达式。

如果匹配成功,则返回true,否则返回false。

2. 提取字符串中的百分比有时候,我们需要从一个字符串中提取出其中的百分比。

比如,我们可以编写一个方法来提取字符串中的百分比,并将其转换为一个浮点数:```javapublic static double extractPercentage(String input) {String regex = "(\\d+(\\.\\d+)?)%";Pattern pattern = pile(regex);Matcher matcher = pattern.matcher(input);if (matcher.find()) {String percentageString = matcher.group(1);return Double.parseDouble(percentageString);} else {throw new IllegalArgumentException("No percentage found in the input string.");}}```该方法使用Pattern和Matcher类来匹配字符串中的百分比。

java正则表达式规则

java正则表达式规则

java正则表达式规则Java正则表达式规则一、什么是正则表达式正则表达式(Regular Expression),简称正则,是一种用来匹配字符串的强大工具。

它可以用来判断一个字符串是否符合某个模式,或者从字符串中提取出符合某个模式的部分。

二、正则表达式语法1. 字符类字符类用来匹配一个字符,可以使用方括号[] 来指定字符的范围或多个字符的集合。

例如,[abc]可以匹配字符'a'、'b'或'c',[a-z]可以匹配任意小写字母。

2. 元字符元字符是正则表达式中具有特殊含义的字符。

常用的元字符有:- .:匹配任意单个字符,除了换行符。

- \d:匹配任意一个数字字符。

- \D:匹配任意一个非数字字符。

- \w:匹配任意一个字母、数字或下划线。

- \W:匹配任意一个非字母、数字或下划线。

- \s:匹配任意一个空白字符(包括空格、制表符、换行符等)。

- \S:匹配任意一个非空白字符。

- $:匹配字符串的结束位置。

3. 量词量词用来指定字符或字符类重复出现的次数。

常用的量词有:- *:匹配前一个字符或字符类出现0次或多次。

- +:匹配前一个字符或字符类出现1次或多次。

- ?:匹配前一个字符或字符类出现0次或1次。

- {n}:匹配前一个字符或字符类出现n次。

- {n,}:匹配前一个字符或字符类出现至少n次。

- {n,m}:匹配前一个字符或字符类出现至少n次、至多m次。

4. 分组和捕获使用小括号() 可以将一系列字符组成一个子表达式,方便进行分组和捕获。

例如,(abc)可以匹配字符串"abc"。

5. 贪婪与非贪婪正则表达式默认是贪婪模式,即尽可能多地匹配字符。

可以在量词后面加上?来使用非贪婪模式,即尽可能少地匹配字符。

6. 边界匹配边界匹配用来限定匹配字符串的边界。

常用的边界匹配符有:- \b:匹配单词的边界。

- \B:匹配非单词的边界。

- $:匹配字符串的结束位置。

java正则表达式

java正则表达式

java正则表达式⼀、校验数字的表达式1 数字:^[0-9]*$2 n位的数字:^\d{n}$3 ⾄少n位的数字:^\d{n,}$4 m-n位的数字:^\d{m,n}$5 零和⾮零开头的数字:^(0|[1-9][0-9]*)$6 ⾮零开头的最多带两位⼩数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$7 带1-2位⼩数的正数或负数:^(\-)?\d+(\.\d{1,2})?$8 正数、负数、和⼩数:^(\-|\+)?\d+(\.\d+)?$9 有两位⼩数的正实数:^[0-9]+(.[0-9]{2})?$10 有1~3位⼩数的正实数:^[0-9]+(.[0-9]{1,3})?$11 ⾮零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$12 ⾮零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$13 ⾮负整数:^\d+$ 或 ^[1-9]\d*|0$14 ⾮正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$15 ⾮负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$16 ⾮正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$17 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$18 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$19 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$⼆、校验字符的表达式1 汉字:^[\u4e00-\u9fa5]{0,}$2 英⽂和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$3 长度为3-20的所有字符:^.{3,20}$4 由26个英⽂字母组成的字符串:^[A-Za-z]+$5 由26个⼤写英⽂字母组成的字符串:^[A-Z]+$6 由26个⼩写英⽂字母组成的字符串:^[a-z]+$7 由数字和26个英⽂字母组成的字符串:^[A-Za-z0-9]+$8 由数字、26个英⽂字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$9 中⽂、英⽂、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$10 中⽂、英⽂、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$11 可以输⼊含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+12 禁⽌输⼊含有~的字符:[^~\x22]+三、特殊需求表达式1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?4 ⼿机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$5 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$6 国内电话号码(0511-*******、021-********):\d{3}-\d{8}|\d{4}-\d{7}7 ⾝份证号(15位、18位数字):^\d{15}|\d{18}$8 短⾝份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$9 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$10 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$11 强密码(必须包含⼤⼩写字母和数字的组合,不能使⽤特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$12 ⽇期格式:^\d{4}-\d{1,2}-\d{1,2}13 ⼀年的12个⽉(01~09和1~12):^(0?[1-9]|1[0-2])$14 ⼀个⽉的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$15 钱的输⼊格式:16 1.有四种钱的表⽰形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$17 2.这表⽰任意⼀个不以0开头的数字,但是,这也意味着⼀个字符"0"不通过,所以我们采⽤下⾯的形式:^(0|[1-9][0-9]*)$18 3.⼀个0或者⼀个不以0开头的数字.我们还可以允许开头有⼀个负号:^(0|-?[1-9][0-9]*)$19 4.这表⽰⼀个0或者⼀个可能为负的开头不为0的数字.让⽤户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下⾯我们要加的是说明可能的⼩数部分:^[0-9]+(.[0-9]+)?$20 5.必须说明的是,⼩数点后⾯⾄少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$21 6.这样我们规定⼩数点后⾯必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$22 7.这样就允许⽤户只写⼀位⼩数.下⾯我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$23 8.1到3个数字,后⾯跟着任意个逗号+3个数字,逗号成为可选,⽽不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$24 备注:这就是最终结果了,别忘了"+"可以⽤"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在⽤函数时去掉去掉那个反斜杠,⼀般的错误都在这⾥25 xml⽂件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$26 中⽂字符的正则表达式:[\u4e00-\u9fa5]27 双字节字符:[^\x00-\xff] (包括汉字在内,可以⽤来计算字符串的长度(⼀个双字节字符长度计2,ASCII字符计1))28 空⽩⾏的正则表达式:\n\s*\r (可以⽤来删除空⽩⾏)29 HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> (⽹上流传的版本太糟糕,上⾯这个也仅仅能部分,对于复杂的嵌套标记依旧⽆能为⼒)30 ⾸尾空⽩字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以⽤来删除⾏⾸⾏尾的空⽩字符(包括空格、制表符、换页符等等),⾮常有⽤的表达式)31 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)32 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字) 33 IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址时有⽤) 34 IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))20个正则表达式必知(能让你少写1,000⾏代码)正则表达式(regular expression)描述了⼀种字符串匹配的模式,可以⽤来检查⼀个串是否含有某种⼦串、将匹配的⼦串做替换或者从某个串中取出符合某个条件的⼦串等。

java中的正则表达式语法

java中的正则表达式语法

java中的正则表达式语法一、什么是正则表达式正则表达式是一种用于描述文本模式的语言。

在Java中,正则表达式通常用于匹配字符串或替换字符串中的某些部分。

二、Java中的正则表达式类Java提供了一个java.util.regex包,其中包含了三个主要的类:Pattern、Matcher和PatternSyntaxException。

1. Pattern类Pattern类是一个编译好的正则表达式,可以被多个Matcher对象共享使用。

它提供了一系列静态方法来创建和编译正则表达式模式,并且可以在运行时进行修改。

2. Matcher类Matcher类是一个匹配器,它可以对输入字符串进行匹配操作。

它提供了多种方法来执行不同类型的匹配操作,并且可以访问和修改匹配结果。

3. PatternSyntaxException类PatternSyntaxException类表示一个无效的正则表达式模式。

当使用不合法的模式时,会抛出该异常。

三、Java中的正则表达式语法Java中的正则表达式语法与其他语言中的略有不同。

下面列出了一些常见的语法:1. 字符串字面量字符串字面量表示普通字符,在正则表达式中没有特殊含义。

例如,“hello”表示一个普通字符串“hello”。

2. 字符集合字符集合用方括号[]括起来,表示只匹配其中的一个字符。

例如,“[abc]”表示匹配字符a、b或c中的任意一个。

3. 范围范围用短横线-连接两个字符,表示匹配这两个字符之间的任意一个字符。

例如,“[a-z]”表示匹配小写字母a到z中的任意一个。

4. 排除排除用脱字符^放在方括号[]内的开头,表示不匹配其中的任何一个字符。

例如,“[^abc]”表示不匹配字符a、b或c中的任何一个。

5. 量词量词指定模式重复出现的次数。

常见的量词有:*:零次或多次+:一次或多次:零次或一次{n}:恰好n次{n,}:至少n次{n,m}:至少n次,但不超过m次例如,“a*”表示零个或多个字母a,“a+”表示至少一个字母a,“a?”表示零个或一个字母a,“a{3}”表示恰好三个字母a,“a{3,}”表示至少三个字母a,“a{3,5}”表示三到五个字母a。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java 正则表达式表达式意义:1.字符x 字符 x。

例如a表示字符a\\ 反斜线字符。

在书写时要写为\\\\。

(注意:因为java在第一次解析时,把\\\\解析成正则表达式\\,在第二次解析时再解析为\,所以凡是不是1.1列举到的转义字符,包括1.1的\\,而又带有\的都要写两次)\0n 带有八进制值 0的字符 n (0 <= n <= 7)\0nn 带有八进制值 0的字符 nn (0 <= n <= 7)\0mnn 带有八进制值 0的字符 mnn(0 <= m <= 3、0 <= n <= 7)\xhh 带有十六进制值 0x的字符 hh\uhhhh 带有十六进制值 0x的字符 hhhh\t 制表符 ('\u0009')\n 新行(换行)符 ('\u000A')\r 回车符('\u000D')\f 换页符 ('\u000C')\a 报警 (bell) 符('\u0007')\e 转义符 ('\u001B')\c x 对应于 x 的控制符2.字符类[abc] a、b或 c(简单类)。

例如[egd]表示包含有字符e、g或d。

[^abc] 任何字符,除了 a、b或 c(否定)。

例如[^egd]表示不包含字符e、g或d。

[a-zA-Z] a到 z或 A到 Z,两头的字母包括在内(范围)[a-d[m-p]] a到 d或m到 p:[a-dm-p](并集)[a-z&&[def]] d、e或 f(交集)[a-z&&[^bc]] a到 z,除了 b和 c:[ad-z](减去)[a-z&&[^m-p]] a到 z,而非m到 p:[a-lq-z](减去)3.预定义字符类(注意反斜杠要写两次,例如\d写为\\d)任何字符(与行结束符可能匹配也可能不匹配)\d 数字:[0-9]\D 非数字: [^0-9]\s空白字符:[ \t\n\x0B\f\r]\S 非空白字符:[^\s]\w 单词字符:[a-zA-Z_0-9]\W 非单词字符:[^\w]4.POSIX 字符类(仅 U S-ASCII)(注意反斜杠要写两次,例如\p{Lower}写为\\p{Lower})\p{Lower} 小写字母字符:[a-z]。

\p{U pper} 大写字母字符:[A-Z]\p{A SCII} 所有 A SCII:[\x00-\x7F]\p{A lpha} 字母字符:[\p{Lower}\p{U pper}]\p{Digit} 十进制数字:[0-9]\p{A lnum} 字母数字字符:[\p{A lpha}\p{Digit}]\p{P unc t} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~\p{Graph} 可见字符:[\p{A lnum}\p{Punc t}]\p{P rint} 可打印字符:[\p{Graph}\x20]\p{Blank} 空格或制表符:[ \t]\p{Cntrl} 控制字符:[\x00-\x1F\x7F]\p{XDigit} 十六进制数字:[0-9a-f A-F]\p{Space} 空白字符:[ \t\n\x0B\f\r]ng.Character 类(简单的 java 字符类型)\p{javaLowerCas e} 等效于 ng.C harac ter.isLowerCase()\p{javaU pperCas e} 等效于 ng.C haracter.isUpperCase()\p{javaWhites pac e} 等效于 ng.C harac ter.is Whites pac e()\p{javaMirrored} 等效于 ng.C haracter.isMirrored()6.Unicode 块和类别的类\p{I nGreek} Greek 块(简单块)中的字符\p{Lu} 大写字母(简单类别)\p{Sc} 货币符号\P{I nGreek} 所有字符,Greek 块中的除外(否定)[\p{L}&&[^\p{Lu}]] 所有字母,大写字母除外(减去)7.边界匹配器^ 行的开头,请在正则表达式的开始处使用^。

例如:^(abc)表示以abc开头的字符串。

注意编译的时候要设置参数M ULTILINE,如 P attern p = P pile(regex,Pattern.MULTILINE);$行的结尾,请在正则表达式的结束处使用。

例如:(^bc a).*(abc$)表示以bc a开头以abc结尾的行。

\b 单词边界。

例如\b(abc)表示单词的开始或结束包含有abc,(abc jj、jjabc都可以匹配)\B 非单词边界。

例如\B(abc)表示单词的中间包含有abc,(jjabc jj匹配而jjabc、abc jj不匹配)\A输入的开头\G 上一个匹配的结尾(个人感觉这个参数没什么用)。

例如\\Gdog表示在上一个匹配结尾处查找dog如果没有的话则从开头查找,注意如果开头不是dog则不能匹配。

\Z 输入的结尾,仅用于最后的结束符(如果有的话)行结束符是一个或两个字符的序列,标记输入字符序列的行结尾。

以下代码被识别为行结束符:‐新行(换行)符('\n')、‐后面紧跟新行符的回车符 ("\r\n")、‐单独的回车符 ('\r')、‐下一行字符 ('\u0085')、‐行分隔符('\u2028') 或‐段落分隔符 ('\u2029)。

\z 输入的结尾当编译模式时,可以设置一个或多个标志,例如Pattern pattern = P attern.c ompile(patternString,P attern.CASE_INSEN SITIVE + P attern.UNICODE_CASE);下面六个标志都是支持的:‐CASE_IN SENSITIVE:匹配字符时与大小写无关,该标志默认只考虑U S A SCII字符。

‐UNICODE_CASE:当与CASE_INSENSITIVE结合时,使用U nic ode字母匹配‐MULTILINE:^和$匹配一行的开始和结尾,而不是整个输入‐UNIX_LINES:当在多行模式下匹配^和$时,只将'\n'看作行终止符‐DOTALL: 当使用此标志时,.符号匹配包括行终止符在内的所有字符‐CANON_EQ: 考虑U nic ode字符的规范等价8.Greedy数量词X? X,一次或一次也没有X* X,零次或多次X+ X,一次或多次X{n} X,恰好 n 次X{n,} X,至少 n次X{n,m} X,至少 n次,但是不超过 m次9.Reluctant 数量词X?? X,一次或一次也没有X*? X,零次或多次X+? X,一次或多次X{n}? X,恰好 n 次X{n,}? X,至少 n次X{n,m}? X,至少 n次,但是不超过 m次10.Possessive 数量词X?+ X,一次或一次也没有X*+ X,零次或多次X++ X,一次或多次X{n}+ X,恰好 n次X{n,}+ X,至少 n 次X{n,m}+ X,至少 n 次,但是不超过m 次Greedy,Reluctant,P ossess ive的区别在于:(注意仅限于进行.等模糊处理时)greedy量词被看作“贪婪的”,因为它第一次就读入整个被模糊匹配的字符串。

如果第一个匹配尝试(整个输入字符串)失败,匹配器就会在被匹配字符串中的最后一位后退一个字符并且再次尝试,重复这个过程,直到找到匹配或者没有更多剩下的字符可以后退为止。

根据表达式中使用的量词,它最后试图匹配的内容是1个或者0个字符。

但是,reluc tant量词采取相反的方式:它们从被匹配字符串的开头开始,然后逐步地一次读取一个字符搜索匹配。

它们最后试图匹配的内容是整个输入字符串。

最后,poss essive量词总是读完整个输入字符串,尝试一次(而且只有一次)匹配。

和greedy量词不同,poss essive从不后退。

11.Logical 运算符XY X 后跟 YX|Y X 或 Y(X) X,作为捕获组。

例如(abc)表示把abc作为一个整体进行捕获12.Back 引用\n 任何匹配的 nth捕获组捕获组可以通过从左到右计算其开括号来编号。

例如,在表达式 ((A)(B(C)))中,存在四个这样的组:1 ((A)(B(C)))2 \A3 (B(C))4 (C)在表达式中可以通过\n来对相应的组进行引用,例如(ab)34\1就表示ab34ab,(ab)34(cd)\1\2就表示ab34c dabc d。

13.引用\ N othing,但是引用以下字符\Q N othing,但是引用所有字符,直到\E。

QE之间的字符串会原封不动的使用(1.1中转义字符的除外)。

例如, ab\\Q{|}\\\\E 可以匹配ab{|}\\\E N othing,但是结束从 \Q开始的引用14.特殊构造(非捕获)(?:X) X,作为非捕获组(?idms ux-idms ux) N othing,但是将匹配标志由 on 转为 off。

比如:表达式 (?i)abc(?-i)def 这时,(?i) 打开不区分大小写开关,abc匹配idms ux说明如下:‐i CASE_IN SENSITIVE :U S-ASCII字符集不区分大小写。

(?i)‐d UNI X_LINES : 打开U NI X换行符‐m MU LTILINE :多行模式(?m)UNIX下换行为\nWINDO WS下换行为\r\n(?s)‐u UNICODE_CASE : U nic ode 不区分大小写。

(?u)‐x COMMENTS :可以在pattern里面使用注解,忽略pattern里面的whites pace,以及"#"一直到结尾(#后面为注解)。

(?x)例如(?x)abc#as f s dads a可以匹配字符串abc(?idms ux-idms ux:X) X,作为带有给定标志 on - off 的非捕获组。

与上面的类似,上面的表达式,可以改写成为:(?i:abc)def,或者(?i)abc(?-i:def)(?=X) X,通过零宽度的正 lookahead。

零宽度正先行断言,仅当子表达式 X 在此位置的右侧匹配时才继续匹配。

例如,\w+(?=\d) 表示字母后面跟数字,但不捕获数字(不回溯)(?!X) X,通过零宽度的负 lookahead。

相关文档
最新文档