Java中的正则表达式+--++示例详解

合集下载

java空格的正则表达式

java空格的正则表达式

java空格的正则表达式Java正则表达式是一种强大的工具,用于在字符串中匹配特定的模式。

本文将介绍如何使用正则表达式来匹配和处理包含空格的字符串。

让我们了解一下正则表达式中的空格符号。

在Java中,空格可以用空格字符“\s”来表示。

这个字符可以匹配任意的空白字符,包括空格、制表符、换行符等。

下面是一些常用的正则表达式示例:1. 匹配一个或多个空格:\s+这个表达式可以匹配连续的一个或多个空格字符。

2. 匹配零个或多个空格:\s*这个表达式可以匹配任意数量的空格字符,包括零个。

3. 匹配一个空格:\s这个表达式可以匹配一个空格字符。

4. 匹配特定数量的空格:\s{n}这个表达式可以匹配恰好n个空格字符。

接下来,让我们来看几个使用正则表达式匹配空格的实际例子。

例1:判断字符串是否包含空格```javaString str = "Hello World";boolean containsSpace = str.matches(".*\\s.*");System.out.println(containsSpace);```这段代码会输出true,因为字符串"Hello World"中包含了一个空格。

例2:替换字符串中的空格```javaString str = "Hello World";String replacedStr = str.replaceAll("\\s+", "-");System.out.println(replacedStr);```这段代码会输出"Hello-World",因为它用"-"替换了字符串中的所有空格。

例3:切割包含空格的字符串```javaString str = "Java is a programming language";String[] words = str.split("\\s+");for (String word : words) {System.out.println(word);}```这段代码会将字符串切割成多个单词,并逐个输出:```Javaisprogramminglanguage```除了上述示例外,正则表达式还可以用于匹配更复杂的模式。

java密码强度正则

java密码强度正则

java密码强度正则
Java 中验证密码强度可以使用正则表达式来进行匹配,以下是一个简单的密码强度正则表达式示例:
```
Pattern pattern =
pile("^(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?= s{2,})$");
Matcher matcher = pattern.matcher("123456");
boolean match = matcher.matches();
System.out.println(match); // true
```
该正则表达式的含义如下:
- `^`匹配输入字符串的开头。

- `(?=.*[a-z])`通过正则表达式来匹配至少一个小写字母。

- `(?=.*[A-Z])`通过正则表达式来匹配至少一个大写字母。

- `(?=.*[@#$%^&+=])`通过正则表达式来匹配至少一个数字或特殊字符。

- `(?=s{2,})`通过正则表达式来匹配至少两个空格。

- `$`匹配输入字符串的结尾。

综合以上正则表达式的含义,该正则表达式可以匹配满足以下规则的密码:
- 长度不少于 6 位。

- 至少包含一个小写字母、一个大写字母、一个数字或一个特殊字符。

- 至少包含两个空格。

需要注意的是,正则表达式只是密码强度验证的一个方面,还需要考虑其他方面的因素,如密码的复杂性、长度等。

同时,过度依赖正则表达式可能会导致密码验证的不准确性,因此需要根据实际情况进行综合考虑。

Java正则表达式详解,附实例(PDF精品)

Java正则表达式详解,附实例(PDF精品)

如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。

如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。

许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能。

那么Java又怎样呢?本文写作时,一个包含了用正则表达式进行文本处理的Java规范需求(Specification Request)已经得到认可,你可以期待在JDK的下一版本中看到它。

然而,如果现在就需要使用正则表达式,又该怎么办呢?你可以从下载源代码开放的Jakarta-ORO库。

本文接下来的内容先简要地介绍正则表达式的入门知识,然后以Jakarta-ORO API 为例介绍如何使用正则表达式。

一、正则表达式基础知识我们先从简单的开始。

假设你要搜索一个包含字符“cat”的字符串,搜索用的正则表达式就是“cat”。

如果搜索对大小写不敏感,单词“catalog”、“Catherine”、“sophisticated”都可以匹配。

也就是说:1.1 句点符号假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。

另外,假设有一本英文字典,你可以用正则表达式搜索它的全部内容。

要构造出这个正则表达式,你可以使用一个通配符——句点符号“.”。

这样,完整的表达式就是“t.n”,它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”,还有其他许多无意义的组合。

这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符:1.2 方括号符号为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号(“[]”)里面指定看来有意义的字符。

Java的Regex--正则表达式

Java的Regex--正则表达式

Java的Regex--正则表达式⼀、概述正则表达式通常被⽤来对字符串提供范围性的校验、替换那些符合某个模式(规则)的⽂本。

正则表达式所对应的类Pattern,所有的正则表达式都是在这个类下创建的。

Pattern类⽤于创建⼀个正则表达式,也可以说创建⼀个匹配模式,它的构造⽅法是私有的,不可以直接创建,但可以通过plie(String regex)简单⼯⼚⽅法创建⼀个正则表达式。

Pattern类只能做⼀些简单的匹配操作,要想得到更强更便捷的正则匹配操作,那就需要将Pattern与Matcher⼀起合作。

Matcher类提供了对正则表达式的分组⽀持,以及对正则表达式的多次匹配⽀持。

完成使⽤⽅法如下:String str = "abc";//指定校验格式Pattern p = pile("abc");//将当前的规则和判断字符串进⾏匹配Matcher m = p.matcher(str);//进⾏判断boolean b = m.matches();System.out.println(b);⼆、正则表达式常⽤符号介绍1、[ ] 表⽰匹配括号中的任意⼀个字符。

⽐如:[a - z ]:表⽰匹配任意⼀个⼩写字母。

2、^字符:如果⽤在[ ]内表⽰⾮;如果^放在了整个表达式的开头,表⽰强制以当前字符开头。

⽐如:[^a-z]:表⽰除了⼩写字母以外的字符;^[a-z]则表⽰以⼩写字母开头。

3、预定义符号:.:表⽰任意字符;\w:表⽰单词字符 [a-zA-Z_0-9]\d:表⽰数字[0-9];\s:表⽰空⽩字符:[ \t\n\x0B\f\r];\D:表⽰⾮数字: [^0-9]\W:表⽰⾮单词字符:[^\w]\S:表⽰⾮空⽩字符:[^\s]⽰例如下:public static void main(String[] args) {String str = "\\\\";//1. 字符串是由3个字符组成:第⼀个字符只能从a/b/c,第⼆个字符只能由r/s/t// 第三个字符是数字// [xyz] - 表⽰可以是x/y/z中的任何⼀个// [a-b] - 按照码表从a开始⼀直找到b//System.out.println(str.matches("[abc][rst][0-9]"));// 1.判断⼀个字符串是否是由⼀个⼩写字母组成// System.out.println(str.matches("[a-z]"));// 2. [^abc]表⽰除了a/b/c// System.out.println(str.matches("[^a-zA-Z]"));//3. 字符串由三个组成,第⼀个是字母,第⼆个是数字,//“.”表⽰任意⼀个字符//System.out.println(str.matches("[a-zA-Z][0-9]."));//4.判断字符串是否只有⼀个字符//System.out.println(str.matches("."));//匹配.//\\. 经过java编译就变成了\.,正则再转义成. 表⽰.//System.out.println(str.matches("\\."));//\\\\java编译\\;\\正则编译后\// \\\\ -> \\ -> \//System.out.println(str.matches("\\\\"));System.out.println(str.matches("\\w"));System.out.println(str);}4、数量词:+:表⽰1次到多次 {1,};*:表⽰0次多到次 {0,};:表⽰0次到⼀次 {0,1};{n}:表⽰有且只有n次;{n,}:表⽰n次及其以上;{n,m}表⽰n-m次之间。

java正则表达式规则

java正则表达式规则

java正则表达式规则Java正则表达式规则是一种用于查找、匹配和处理字符串的强大工具。

它基于模式匹配的概念,通过定义一组规则来识别和操作字符串。

下面是一些常用的Java正则表达式规则:1. 匹配数字:可以使用`\d`表示匹配一个数字字符,`\d+`表示匹配一个或多个数字字符。

例如,`"123"`可以匹配`\d+`。

2. 匹配字母:可以使用`\w`表示匹配一个字母字符,`\w+`表示匹配一个或多个字母字符。

例如,`"abc"`可以匹配`\w+`。

3. 匹配空白字符:可以使用`\s`表示匹配一个空白字符,`\s+`表示匹配一个或多个空白字符。

例如,`" "`可以匹配`\s+`。

4. 匹配任意字符:可以使用`.`表示匹配任意一个字符,`.*`表示匹配任意数量的字符。

例如,`"abc"`可以匹配`.*`。

5. 匹配特定字符:可以使用`[]`表示匹配方括号中的任意一个字符。

例如,`[abc]`可以匹配字符`a`、`b`或`c`。

6. 匹配多个字符:可以使用`{n}`表示匹配前一个元素n次,`{n,}`表示匹配前一个元素至少n次,`{n,m}`表示匹配前一个元素n到m次。

例如,`"abc{2,4}"`可以匹配`abcc`、`abccc`或`abcccc`。

7. 匹配特殊字符:某些字符在正则表达式中有特殊含义,需要使用反斜杠`\`进行转义。

例如,`"\("`可以匹配字符`(`。

以上是一些常用的Java正则表达式规则,可以根据具体的需求来选择合适的规则进行字符串的处理和匹配。

在实际应用中,可以利用Java的`Pattern`和`Matcher`类来使用正则表达式进行字符串的操作。

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

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

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卫通)那么现在就可以正则匹配测试了,import java.io.IOException;import java.util.regex.Matcher;import java.util.regex.Pattern;public class ClassPathResource {public static boolean isMobileNO(String mobiles){Pattern p = pile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");Matcher m = p.matcher(mobiles);System.out.println(m.matches()+"---");return m.matches();}public static void main(String[] args) throws IOException {System.out.println(ClassPathResource.isMobileNO("12016155153"));}}第⼆种⽅法:import java.util.regex.Matcher;import java.util.regex.Pattern;String value="⼿机号";String regExp = "^[1]([3][0-9]{1}|59|58|88|89)[0-9]{8}$";Pattern p = pile(regExp);Matcher m = p.matcher(value);return m.find();//booleanPS:这⾥再为⼤家提供2款⾮常⽅便的正则表达式⼯具供⼤家参考使⽤:更多关于java算法相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》和《》希望本⽂所述对⼤家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正则表达式的用法。

1. 匹配字符使用正则表达式可以匹配一个或多个字符,例如:String str = "hello world";Pattern pattern = pile("world"); // 创建一个匹配"world"的正则表达式Matcher matcher = pattern.matcher(str); // 在字符串中匹配正则表达式boolean result = matcher.find(); // 查找是否有匹配System.out.println(result); // 输出true2. 匹配字符集合在正则表达式中,使用方括号([])来表示一个字符集合。

例如:String str = "hello world";Pattern pattern = pile("[aeiou]"); // 表示匹配任何一个元音字母Matcher matcher = pattern.matcher(str);while (matcher.find()) { // 循环查找匹配的字符String match = matcher.group(); // 获取匹配的字符System.out.println(match);}3. 匹配数量在正则表达式中,使用特殊字符表示数量。

例如:String str = "hello world";Pattern pattern = pile("l{2}"); // 表示匹配连续两个l Matcher matcher = pattern.matcher(str);boolean result = matcher.find();System.out.println(result);4. 匹配特殊字符在正则表达式中,一些字符具有特殊意义,例如点(.)表示匹配任意单个字符,反斜杠(\)用于转义特殊字符。

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作为一种广泛应用的编程语言,对于处理中文字符具有很高的需求。

在实际开发中,经常会遇到需要判断字符串中是否包含汉字的情况。

而Java中并没有内置的方法来直接判断字符串是否包含汉字,因此需要借助一些技巧来实现这一功能。

本文将介绍几种判断字符串是否包含汉字的方法,并对它们进行比较和分析,以供读者参考。

二、方法一:使用正则表达式1. 使用Java的正则表达式功能,可以很方便地判断字符串是否包含汉字。

利用Unicode字符集的特性,可以使用正则表达式[\u4e00-\u9fa5]来匹配一个汉字。

2. 代码示例:```javapublic boolean cont本人nsChinese(String str) {return str.matches(".*[\u4e00-\u9fa5].*");}```3. 该方法通过一次正则匹配就能判断字符串中是否包含汉字,简洁高效。

三、方法二:遍历字符1. 通过遍历字符串中的每个字符,判断其Unicode编码范围来判断是2. 代码示例:```javapublic boolean cont本人nsChinese(String str) {char[] chars = str.toCharArray();for (char c : chars) {if (Character.toString(c).matches("[\u4e00-\u9fa5]")) {return true;}}return false;}```3. 该方法相对于使用正则表达式,需要遍历整个字符串,性能较差。

四、方法三:使用Java内置类库1. Java的内置类库ng.Character提供了一些方法用于判断字符的属性,其中包括isIdeographic方法,可以判断字符是否为汉字。

2. 代码示例:```javapublic boolean cont本人nsChinese(String str) {char[] chars = str.toCharArray();for (char c : chars) {if (Character.isIdeographic(c)) {return true;}}return false;}```3. 该方法使用了Java内置的方法,可读性较好,但性能可能并不如方法一。

java 数字英文组合 正则

java 数字英文组合 正则

1. 介绍在Java编程中,经常需要处理数字和英文组合的字符串,如唯一识别信息号码、通信、电流信箱位置区域等。

为了有效地对这些字符串进行校验和处理,我们可以使用正则表达式来实现。

本文将针对Java中数字英文组合的正则表达式进行详细介绍和讲解。

2. 正则表达式基础在介绍具体的数字英文组合的正则表达式之前,我们先来了解一下正则表达式的基础知识。

正则表达式是一种文本模式匹配的工具,可以用来检索、替换和匹配字符串。

它是由普通字符和元字符(metacharacter)组成的序列,用来描述一组字符串。

3. 数字英文组合正则表达式在Java中,我们可以使用正则表达式来匹配包含数字和英文字母的字符串。

以下是一些常见的数字英文组合正则表达式示例。

3.1 匹配纯数字字符串的正则表达式:```javaString regex = "\\d+";```该正则表达式用于匹配一个或多个数字的字符串,其中"\d"表示匹配任意数字,"+"表示匹配一个或多个。

3.2 匹配纯英文字符串的正则表达式:```javaString regex = "[a-zA-Z]+";```该正则表达式用于匹配一个或多个英文字母的字符串,其中"[a-zA-Z]"表示匹配任意大小写英文字母,"+"表示匹配一个或多个。

3.3 匹配数字和英文组合的字符串的正则表达式:```javaString regex = "^[a-zA-Z0-9]+$";```该正则表达式用于匹配同时包含数字和英文字母的字符串,其中"^"表示匹配行的开始,"[a-zA-Z0-9]"表示匹配任意大小写英文字母和数字,"+"表示匹配一个或多个,"$"表示匹配行的结束。

4. 示例代码下面通过示例代码来演示如何在Java中使用正则表达式匹配数字英文组合的字符串。

java匹配中文汉字的正则表达式

java匹配中文汉字的正则表达式

java匹配中⽂汉字的正则表达式正则表达式匹配中⽂先要了解中⽂的编码代码如下复制代码[u4E00-u9FA5]汉字?[uFE30-uFFA0]全⾓字符[u4E00-u9FA5]汉字?[uFE30-uFFA0]全⾓字符匹配中⽂字符的正则表达式: [u4e00-u9fa5]匹配双字节字符(包括汉字在内):[^x00-xff]应⽤:计算字符串的长度(⼀个双字节字符长度计2,ASCII字符计1)代码如下复制代码String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;}匹配空⾏的正则表达式:n[s| ]*r匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/匹配⾸尾空格的正则表达式:(^s*)|(s*$)知道它了我们就好解决了代码如下复制代码public static void regxChinese(){// 要匹配的字符串String source = "<span title='5 星级酒店' class='dx dx5'>";// 将上⾯要匹配的字符串转换成⼩写// source = source.toLowerCase();// 匹配的字符串的正则表达式String reg_charset = "<span[^>]*?title='([0-9]*[\s|\S]*[u4E00-u9FA5]*)'[\s|\S]*class='[a-z]*[\s|\S]*[a-z]*[0-9]*'";Pattern p = pile(reg_charset);Matcher m = p.matcher(source);while (m.find()) {System.out.println(m.group(1));}}public static void regxChinese(){// 要匹配的字符串String source = "<span title='5 星级酒店' class='dx dx5'>";// 将上⾯要匹配的字符串转换成⼩写// source = source.toLowerCase();// 匹配的字符串的正则表达式String reg_charset = "<span[^>]*?title='([0-9]*[\s|\S]*[u4E00-u9FA5]*)'[\s|\S]*class='[a-z]*[\s|\S]*[a-z]*[0-9]*'";Pattern p = pile(reg_charset);Matcher m = p.matcher(source);while (m.find()) {System.out.println(m.group(1));}}Java的正则表达式是可以匹配中⽂字符的,同时,⽤中⽂字符来写表达式也是可以的代码如下复制代码String reg_charset = "<span[^>]*?title='([0-9]*[\s|\S]*星级酒店)'[\s|\S]*class='[a-z]*[\s|\S]*[a-z]*[0-9]*'";String reg_charset = "<span[^>]*?title='([0-9]*[\s|\S]*星级酒店)'[\s|\S]*class='[a-z]*[\s|\S]*[a-z]*[0-9]*'";⼀些常⽤的正则匹配规则匹配中⽂字符的正则表达式: [u4e00-u9fa5] 评注:匹配中⽂还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以⽤来计算字符串的长度(⼀个双字节字符长度计2,ASCII字符计1) 匹配空⽩⾏的正则表达式:ns*r 评注:可以⽤来删除空⽩⾏ 匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? /> 评注:⽹上流传的版本太糟糕,上⾯这个也仅仅能匹配部分,对于复杂的嵌套标记依旧⽆能为⼒ 匹配⾸尾空⽩字符的正则表达式:^s*|s*$ 评注:可以⽤来删除⾏⾸⾏尾的空⽩字符(包括空格、制表符、换页符等等),⾮常有⽤的表达式 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 评注:表单验证时很实⽤ 匹配⽹址URL的正则表达式:[a-zA-z]+://[^s]* 评注:⽹上流传的版本功能很有限,上⾯这个基本可以满⾜需求 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实⽤ 匹配国内电话号码:d{3}-d{8}|d{4}-d{7} 评注:匹配形式如 0511-******* 或 021-******** 匹配腾讯QQ号:[1-9][0-9]{4,} 评注:腾讯QQ号从10000开始 匹配中国邮政编码:[1-9]d{5}(?!d) 评注:中国邮政编码为6位数字 匹配⾝份证:d{15}|d{18} 评注:中国的⾝份证为15位或18位 匹配ip地址:d+.d+.d+.d+ 评注:提取ip地址时有⽤更多详细内容请查看:。

JAVA正则表达式语法

JAVA正则表达式语法

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]。

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 email正则

java email正则

java email正则Java邮箱正则表达式是用来验证电子邮件地址是否符合标准格式的工具。

在Java中,我们可以使用正则表达式来检查电子邮件地址是否包含必要的组成部分,如用户名、域名和域后缀等。

以下是一个简单的示例:```javaimport java.util.regex.Matcher;import java.util.regex.Pattern;public class EmailValidator {private static final String EMAIL_REGEX = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$";public static boolean isValidEmail(String email) {Pattern pattern = pile(EMAIL_REGEX);Matcher matcher = pattern.matcher(email);return matcher.matches();}public static void main(String[] args) {Stringemail="***************";if (isValidEmail(email)) {System.out.println("Valid email address");} else {System.out.println("Invalid email address");}}}```上述代码中,我们使用了一个常量`EMAIL_REGEX`来定义正则表达式,该正则表达式可以匹配大多数标准的电子邮件地址格式。

`isValidEmail`方法接受一个字符串参数,并使用`Pattern`和`Matcher`类来验证该字符串是否符合电子邮件地址的格式要求。

需要注意的是,正则表达式只能验证电子邮件地址的格式是否正确,但不能验证电子邮件地址是否真实存在。

java常用正则表达式

java常用正则表达式

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用
匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
匹配国内电话号码:\d{3}-\d{8} ?\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822
匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
匹配中国邮政编码:[1-9]\d{5}(?!\d)
评注:中国邮政编码为6位数字
匹配身份证:\d{15} ?\d{18}
评注:中国的身份证为15位或18位
匹配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有用
匹配特定数字:
^[1-9]\d*$ //匹配正整数
^-[1-9]\d*$ //匹配负整数
^-?[1-9]\d*$ //匹配整数
21。匹配空行的正则表达式:\n[\s ? ]*\r
22。匹配HTML标记的正则表达式:/ <(.*)>.* <\/\1> ? <(.*) \/>/
23。匹配首尾空格的正则表达式:(^\s*) ?(\s*$)
* 正则表达式用例

java正则表达式(内附例子)

java正则表达式(内附例子)

java正则表达式(内附例⼦)正则表达式 定义:正则表达式,⼜称规则表达式。

(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的⼀个概念。

正则表达式通常被⽤来检索、替换那些符合某个模式(规则)的⽂本。

概念:正则表达式是对字符串操作的⼀种逻辑公式,就是⽤事先定义好的⼀些特定字符、及这些特定字符的组合,组成⼀个“规则字符串”,这个“规则字符串”⽤来表达对字符串的⼀种过滤逻辑。

⽬的:给定⼀个正则表达式和另⼀个字符串,我们可以达到如下的⽬的: 1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)。

2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。

特点:正则表达式的特点是: 1. 灵活性、逻辑性和功能性⾮常强; 2. 可以迅速地⽤极简单的⽅式达到字符串的复杂控制。

3. 对于刚接触的⼈来说,⽐较晦涩难懂。

4、由于正则表达式主要应⽤对象是⽂本,因此它在各种⽂本编辑器场合都有应⽤,⼩到著名编辑器EditPlus,⼤到MicrosoftWord、Visual Studio等⼤型编辑器,都可以使⽤正则表达式来处理⽂本内容。

元字符 要想真正的⽤好正则表达式,正确的理解元字符是最重要的事情。

下表列出了所有的元字符和对它们的⼀个简短的描述。

元字符描述\将下⼀个字符标记符、或⼀个向后引⽤、或⼀个⼋进制转义符。

例如,“\\n”匹配\n。

“\n”匹配换⾏符。

序列“\\”匹配“\”⽽“\(”则匹配“(”。

即相当于多种编程语⾔中都有的“转义字符”的概念。

^匹配输⼊字⾏⾸。

如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。

$匹配输⼊⾏尾。

如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。

*匹配前⾯的⼦表达式任意次。

例如,zo*能匹配“z”,也能匹配“zo”以及“zoo”。

JAVA中正则表达式使用介绍

JAVA中正则表达式使用介绍

JAVA中正则表达式使用介绍一、什么是正则表达式正则表达式是一种可以用于模式匹配和替换的强有力的工具。

我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或sed shell程序等。

此外,象JavaScript这种客户端的脚本语言也提供了对正则表达式的支持。

正则表达式可以让用户通过使用一系列的特殊字符构建匹配模式,进行信息的验证。

此外,它还能够高效地创建、比较和修改字符串,以及迅速地分析大量文本和数据以搜索、移除和替换文本。

例如:二、基础知识1.1开始、结束符号(它们同时也属于定位符)我们先从简单的开始。

假设你要写一个正则表达式规则,你会用到^和$符号,他们分别是行首符、行尾符。

例如:/^\d+[0-9]?\d+$/1.2句点符号假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。

另外,假设有一本英文字典,你可以用正则表达式搜索它的全部内容。

要构造出这个正则表达式,你可以使用一个通配符——句点符号“.”。

这样,完整的表达式就是“t.n”,它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”,还有其他许多无意义的组合。

这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符:1.3方括号符号为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号(“[]”)里面指定看来有意义的字符。

此时,只有方括号里面指定的字符才参与匹配。

也就是说,正则表达式“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”。

但“Toon”不匹配,因为在方括号之内你只能匹配单个字符:1.4“或”符号如果除了上面匹配的所有单词之外,你还想要匹配“toon”,那么,你可以使用“|”操作符。

“|”操作符的基本意义就是“或”运算。

要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。

java 正则表达式校验护照 的写法

java 正则表达式校验护照 的写法

java 正则表达式校验护照的写法Java 正则表达式校验护照的写法在实际开发中,我们经常需要对护照号码进行校验,以确保其合法性和正确性。

正则表达式是一种强大的工具,它可以帮助我们快速而有效地进行字符串匹配和校验。

接下来,我们将一步一步回答关于使用Java 正则表达式校验护照的问题。

1. 什么是护照号码?护照是一种国际旅行证件,用于身份验证和国际旅行。

护照号码是唯一标识一个护照的数字和字母组合。

各国护照号码的格式可能会有所不同,因此我们需要使用不同的正则表达式来校验不同国家的护照号码。

2. 如何校验中国护照号码?中国护照号码由一串数字和大写字母组成,共有9位或11位。

其中,前一个字母为大写的‘E’或‘G’,后面跟着8位或10位数字。

校验中国护照号码的正则表达式可以写为:javaString regex = "^[EG]\\d{8} ^[EG]\\d{10}";上述正则表达式使用了“^”和“”分别表示字符串的开头和结尾。

^EG 表示以大写字母‘E’或‘G’开头,\\d{8} 表示后面是8位数字。

正则表达式的后半部分^[EG]\\d{10} 表示护照号码有可能是11位,也可能是9位,其中\\d{10} 表示后面是10位数字。

3. 如何校验美国护照号码?美国护照号码是一个由9个字符组成的字符串,其中包含一个字母和八个数字。

校验美国护照号码的正则表达式可以写为:javaString regex = "^[a-zA-Z]\\d{8}";上述正则表达式使用了“^”和“”分别表示字符串的开头和结尾。

[a-zA-Z] 表示一个字母,\\d{8} 表示后面是8位数字。

4. 如何校验其他国家的护照号码?不同国家的护照号码格式可能会有所不同,我们需要查找相应国家的护照号码规则并编写相应的正则表达式进行校验。

以下是一些示例:a. 英国护照号码:由六个或九个字符组成,第一个字符是字母。

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

Java中的正则表达式众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。

因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。

大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。

正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

自从jdk1.4推出java.util.regex包,就为我们提供了很好的JAVA正则表达式应用平台。

因为正则表达式是一个很庞杂的体系,所以我仅例举些入门的概念,更多的请参阅相关书籍及自行摸索。

\\ 反斜杠\t 间隔 ('\u0009')\n 换行 ('\u000A')\r 回车 ('\u000D')\d 数字等价于[0-9]\D 非数字等价于[^0-9]\s 空白符号 [\t\n\x0B\f\r]\S 非空白符号 [^\t\n\x0B\f\r]\w 单独字符 [a-zA-Z_0-9]\W 非单独字符 [^a-zA-Z_0-9]\f 换页符\e Escape\b 一个单词的边界\B 一个非单词的边界\G 前一个匹配的结束^为限制开头^java 条件限制为以Java为开头字符$为限制结尾java$ 条件限制为以java为结尾字符.为限制一个任意字符java.. 条件限制为java后除换行外任意两个字符加入特定限制条件「[]」[a-z] 条件限制在小写a to z范围中一个字符[A-Z] 条件限制在大写A to Z范围中一个字符[a-zA-Z] 条件限制在小写a to z或大写A to Z范围中一个字符[0-9] 条件限制在小写0 to 9范围中一个字符[0-9a-z] 条件限制在小写0 to 9或a to z范围中一个字符[0-9[a-z]] 条件限制在小写0 to 9或a to z范围中一个字符(交集)[]中加入^后加再次限制条件「[^]」[^a-z] 条件限制在非小写a to z范围中一个字符[^A-Z] 条件限制在非大写A to Z范围中一个字符[^a-zA-Z] 条件限制在非小写a to z或大写A to Z范围中一个字符[^0-9] 条件限制在非小写0 to 9范围中一个字符[^0-9a-z] 条件限制在非小写0 to 9或a to z范围中一个字符[^0-9[a-z]] 条件限制在非小写0 to 9或a to z范围中一个字符(交集)在限制条件为特定字符出现0次以上时,可以使用「*」J* 0个以上J.* 0个以上任意字符J.*D J与D之间0个以上任意字符在限制条件为特定字符出现1次以上时,可以使用「+」J+ 1个以上J.+ 1个以上任意字符J.+D J与D之间1个以上任意字符在限制条件为特定字符出现有0或1次以上时,可以使用「?」JA? J或者JA出现限制为连续出现指定次数字符「{a}」J{2} JJJ{3} JJJ文字a个以上,并且「{a,}」J{3,} JJJ,JJJJ,JJJJJ,???(3次以上J并存)文字个以上,b个以下「{a,b}」J{3,5} JJJ或JJJJ或JJJJJ两者取一「|」J|A J或AJava|Hello Java或Hello「()」中规定一个组合类型比如,我查询<a href=\"index.html\">index</a>中<a href></a>间的数据,可写作<a.*href=\".*\">(.+?)</a>在使用pile函数时,可以加入控制正则表达式的匹配行为的参数:Pattern pile(String regex, int flag)flag的取值范围如下:Pattern.CANON_EQ 当且仅当两个字符的"正规分解(canonicaldecomposition)"都完全相同的情况下,才认定匹配。

比如用了这个标志之后,表达式"a\u030A"会匹配"?"。

默认情况下,不考虑"规范相等性(canonical equivalence)"。

Pattern.CASE_INSENSITIVE(?i) 默认情况下,大小写不明感的匹配只适用于US-ASCII字符集。

这个标志能让表达式忽略大小写进行匹配。

要想对Unicode 字符进行大小不明感的匹配,只要将UNICODE_CASE与这个标志合起来就行了。

MENTS(?x) 在这种模式下,匹配时会忽略(正则表达式里的)空格字符(译者注:不是指表达式里的"\\s",而是指表达式里的空格,tab,回车之类)。

注释从#开始,一直到这行结束。

可以通过嵌入式的标志来启用Unix行模式。

Pattern.DOTALL(?s) 在这种模式下,表达式'.'可以匹配任意字符,包括表示一行的结束符。

默认情况下,表达式'.'不匹配行的结束符。

Pattern.MULTILINE(?m) 在这种模式下,'^'和'$'分别匹配一行的开始和结束。

此外,'^'仍然匹配字符串的开始,'$'也匹配字符串的结束。

默认情况下,这两个表达式仅仅匹配字符串的开始和结束。

Pattern.UNICODE_CASE(?u) 在这个模式下,如果你还启用了CASE_INSENSITIVE标志,那么它会对Unicode字符进行大小写不明感的匹配。

默认情况下,大小写不敏感的匹配只适用于US-ASCII字符集。

Pattern.UNIX_LINES(?d) 在这个模式下,只有'\n'才被认作一行的中止,并且与'.','^',以及'$'进行匹配。

抛开空泛的概念,下面写出几个简单的Java正则用例:◆比如,在字符串包含验证时//查找以Java开头,任意结尾的字符串Pattern pattern = pile("^Java.*");Matcher matcher = pattern.matcher("Java不是人");boolean b= matcher.matches();//当条件满足时,将返回true,否则返回falseSystem.out.println(b);◆以多条件分割字符串时Pattern pattern = pile("[, |]+");String[] strs = pattern.split("Java Hello World Java,Hello,,World|Sun"); for (int i=0;i<strs.length;i++) {System.out.println(strs[i]);}◆文字替换(首次出现字符)Pattern pattern = pile("正则表达式");Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式Hello World");//替换第一个符合正则的数据System.out.println(matcher.replaceFirst("Java"));◆文字替换(全部)Pattern pattern = pile("正则表达式");Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式Hello World");//替换第一个符合正则的数据System.out.println(matcher.replaceAll("Java"));◆文字替换(置换字符)Pattern pattern = pile("正则表达式");Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式Hello World ");StringBuffer sbr = new StringBuffer();while (matcher.find()) {matcher.appendReplacement(sbr, "Java");}matcher.appendTail(sbr);System.out.println(sbr.toString());◆验证是否为邮箱地址String str="ceponline@";Pattern pattern =pile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",Pattern.CASE_ INSENSITIVE);Matcher matcher = pattern.matcher(str);System.out.println(matcher.matches());◆去除html标记Pattern pattern = pile("<.+?>", Pattern.DOTALL);Matcher matcher = pattern.matcher("<a href=\"index.html\">主页</a>"); String string = matcher.replaceAll("");System.out.println(string);◆查找html中对应条件字符串Pattern pattern = pile("href=\"(.+?)\"");Matcher matcher = pattern.matcher("<a href=\"index.html\">主页</a>"); if(matcher.find())System.out.println(matcher.group(1));}◆截取http://地址//截取urlPattern pattern =pile("(http://|https://){1}[\\w\\.\\-/:]+");Matcher matcher = pattern.matcher("dsdsds<http://dsds//gfgffdfd>fdf"); StringBuffer buffer = new StringBuffer();while(matcher.find()){buffer.append(matcher.group());buffer.append("\r\n");System.out.println(buffer.toString());}◆替换指定{}中文字String str = "Java目前的发展史是由{0}年-{1}年";String[][] object={new String[]{"\\{0\\}","1995"},newString[]{"\\{1\\}","2007"}};System.out.println(replace(str,object));public static String replace(final String sourceString,Object[] object) {String temp=sourceString;for(int i=0;i<object.length;i++){String[] result=(String[])object[i];Pattern pattern = pile(result[0]);Matcher matcher = pattern.matcher(temp);temp=matcher.replaceAll(result[1]);}return temp;}◆以正则条件查询指定目录下文件//用于缓存文件列表private ArrayList files = new ArrayList();//用于承载文件路径private String _path;//用于承载未合并的正则公式private String _regexp;class MyFileFilter implements FileFilter {/*** 匹配文件名称*/public boolean accept(File file) {try {Pattern pattern = pile(_regexp);Matcher match =pattern.matcher(file.getName());return match.matches();} catch (Exception e) {return true;}}}/*** 解析输入流* @param inputs*/FilesAnalyze (String path,String regexp){getFileName(path,regexp);}/*** 分析文件名并加入files* @param input*/private void getFileName(String path,String regexp) {//目录_path=path;_regexp=regexp;File directory = new File(_path);File[] filesFile = directory.listFiles(new MyFileFilter());if (filesFile == null) return;for (int j = 0; j < filesFile.length; j++) {files.add(filesFile[j]);}return;}/*** 显示输出信息* @param out*/public void print (PrintStream out) {Iterator elements = files.iterator();while (elements.hasNext()) {File file=(File) elements.next();out.println(file.getPath());}}public static void output(String path,String regexp) {FilesAnalyze fileGroup1 = new FilesAnalyze(path,regexp);fileGroup1.print(System.out);}public static void main (String[] args) {output("C:\\","[A-z|.]*");}。

相关文档
最新文档