1. 首页 > 热点 >

正则表达式重要吗?琪琪来为您解答

您好,今天琪琪来为大家解答以上的问题。正则表达式重要吗相信很多小伙伴还不知道,现在让我们一起来看看吧!

正则表达式重要吗?琪琪来为您解答正则表达式重要吗?琪琪来为您解答


1、一、概述正则表达式是Ja处理字符串、文本的重要工具。

2、Ja对正则表达式的处理集中在以下两个两个类:ja.util.regex.Matcher 模式类:用来表示一个编译过的正则表达式。

3、ja.util.regex.Pattern 匹配类:用模式匹配一个字符串所表达的抽象结果。

4、(新版的Ja Doc有解释。

5、)比如一个简单例子:Ja代码import ja.util.regex.Matcher;import ja.util.regex.Pattern;public class RegxOperator {/ @param args/public static void main(String[] args) {// TODO Auto-generated method stubPattern p = "f(.+?)k");Matcher m = p.matcher("fckfkkfkf");while (m.find()) {String s0 = m.group();String s1 = m.group(1);System.out.println(s0 + "||" + s1);}System.out.println("---------");m.reset("ing!");while (m.find()) {System.out.println(m.group());}Pattern p1 = "f(.+?)i(.+?)h");Matcher m1 = p1.matcher("finishabigfishfrish");while (m1.find()) {String s0 = m1.group();String s1 = m1.group(1);String s2 = m1.group(2);System.out.println(s0 + "||" + s1 + "||" + s2);}System.out.println("---------");Pattern p3 = "(19|20)\d\d([- /.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])");Matcher m3 = p3.matcher("1900-01-01 2007/08/13 1900.01.01 1900 01 01 1900-01.01 1900 13 01 1900 02 31");while (m3.find()) {System.out.println(m3.group());}}}输出结果:fck||cfkk||k---------finish||in||sfishfrish||ishfr||s---------1900-01-012007/08/131900.01.011900 01 011900 02 31Ja代码import ja.util.regex.Matcher;import ja.util.regex.Pattern;public class Test {public static void main(String args[]) {String rawDate = "1900-01-01 2007/08/13 1900.01.01 1900 01 01 1900-01.01 1900 13 01 1900 02 31";String patternStr = "(\d{4})[- /.](\d{2})[- /.](\d{2})";Pattern pattern = matcher = pattern.matcher(rawDate);while(matcher.find()){System.out.println("full date is " + matcher.group());System.out.println("year is " + matcher.group(1));System.out.println("month is " + matcher.group(2));System.out.println("date is " + matcher.group(3));}}}full date is 1900-01-01year is 1900month is 01date is 01full date is 2007/08/13year is 2007month is 08date is 13full date is 1900.01.01year is 1900month is 01date is 01full date is 1900 01 01year is 1900month is 01date is 01full date is 1900-01.01year is 1900month is 01date is 01full date is 1900 13 01year is 1900month is 13date is 01full date is 1900 02 31year is 1900month is 02date is 31二、一些容易迷糊的问题1、Ja对反斜线处理的问题在其他语言中,\表示要插入一个字符;在Ja语言中,\表示要插入正则表达式的反斜线,并且后面的字符有特殊意义。

6、看API文档:预定义字符类. 任何字符(与行结束符可能匹配也可能不匹配)d 数字:[0-9]D 非数字: [^0-9]s 空白字符:[ x0Bf]S 非空白字符:[^s]w 单词字符:[a-zA-Z_0-9]W 非单词字符:[^w]但是看看上面程序,对比下不难看出:d在实际使用的时候就写成了 \d;在Ja正则表达式中,如果要插入一个字符,则需要在正则表达式中写成\\,原因是下面的APIDoc定义\表示一个反斜线。

7、但是如果在正则表示式中表示回车换行等,则不需要多添加反斜线了。

8、比如回车就写作.字符x 字符 x\ 反斜线字符n 带有八进制值 0 的字符 n (0 = n = 7)nn 带有八进制值 0 的字符 nn (0 = n = 7)mnn 带有八进制值 0 的字符 mnn(0 = m = 3、0 = n = 7)xhh 带有十六进制值 0x 的字符 hhuhhhh 带有十六进制值 0x 的字符 hhhh制表符 ('u0009')新行(换行)符 ('u000A')回车符 ('u000D')f 换页符 ('u000C')a 报警 (bell) 符 ('u0007')e 转义符 ('u001B')cx 对应于 x 的控制符2、Matcher.find():尝试查找与模式匹配的字符序列的下一个子序列。

9、此方法从字符序列的开头开始,如果该方法的前一次调用成功了并且从那时开始匹配器没有被重置,则从以前匹配作没有匹配的个字符开始,即如果前一次找到与模式匹配的子序列则这次从这个子序列后开始查找。

10、3、Matcher.matchers():判断整个字符序列与模式是否匹配。

11、当连续用Matcher对象检查多个字符串时候,可以使用Matcher.reset():重置匹配器,放弃其所有显式状态信息并将其添加位置设置为零。

12、或者Matcher.reset(CharSequence input) 重置此具有新输入序列的匹配器。

13、来重复使用匹配器。

14、4、组的概念,这个概念很重要,组是用括号划分的正则表达式,可以通过编号来引用组。

15、组号从0开始,有几对小括号就表示有几个组,并且组可以嵌套,组号为0的表示整个表达式,组号为1的表示个组,依此类推。

本文到这结束,希望上面文章对大家有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 12345678@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息