Java 编程中的正则表达式指南

更新:10-28 名人轶事 我要投稿 纠错 投诉

定位符

常用定位器方法^ 匹配输入字符串的开头$ 匹配输入字符串的结尾。 b 匹配单词边界,即单词和空格之间的位置。它常被用来表示单词B非单词边界匹配。 b 字符的位置非常重要。如果单词位于要匹配的字符串的开头,它将在单词的开头查找匹配项。如果它位于字符串的末尾,它将在单词的末尾查找匹配项

Chapter 的前三个字符:bCha

匹配单词Chapter ter :terb 中的字符串

元字符参考

常用的元字符模式b匹配单词边界;即单词和空格之间的位置。 Bd数字字符匹配相当于[0-9]D相当于[^0-9]w相当于[A-Za-z0-9_,匹配以下任意字符:A-Z、a-z、 0 -9 和下划线] W 相当于[^A-Za-z0-9_],匹配除A-Z、a-z、0-9 和下划线之外的任意字符。 ][xyz][abc] 匹配“plain”字符集中的“a”,并匹配任意指定字符。

反向引用,类似于java正则中的group(1),便是正则第一个括号中的值

正则表达式为number: 1

大小写是否区分

常用的元字符方法(?)是不区分大小写的sensitive(?)caseless(?)sensitive可以匹配sensitiveCaSelessSENsentive(?-i)关闭不区分大小写,sensitive(?-!)caseless(? -!)sensitive 只能匹配sensitivecaselesssensitive

通过举例子的方式来表达

需要传输的字符摘要

实际操作

1.|:添加|两个之后表示匹配一个|。 |是一个元字符。在Java中,本身就具有转义功能,所以两次,在Java中,就相当于前者的是后者的转义意义。然后使用to|改变意思

2、[0-9]{1,}:代表一个数字。数字0-9在某个位置至少出现一次。 {n,m}表示前一个至少出现n次,最多m次。

3. ():表示子表达式的开始和结束,如((?th)([1-9]{1,})(paragraph)?),在(?th) 中,这个是一个子表达式,([1-9]{1,}) 这是一个子表达式,(paragraph) 这是一个子表达式

4. 匹配除换行符n之外的任何单个字符,

5、^:在方括号外面,表示字符串的起始位置,在方括号里面,表示不是。

6.|:或运算

7. 章节表示:[1-9][0-9]*

8.*:表示匹配任意单个字符* 表示匹配前一个出现0到多次的字符

9、要匹配一行文本末尾的文本,请在正则表达式末尾使用$字符:章节[1-9][0-9]{0,1}$

10. 要匹配一行文本开头的文本,请在正则表达式的开头使用^ 字符: ^Chapter [1-9][0-9]{0,1}

11. 匹配单词Chapter 的前三个字符,因为这三个字符出现在单词边界之后: bCha

java编写正则的过程

1. 编写特殊字符串——正则表达式,如a|f。

String reg1="($下划线[0-9]{1,}$)|($括号[1-9]{1,}$)";

2.将正则表达式编译成模板:p

模式模式=Pattern.compile(reg1);

3、使用模板p来匹配字符串str。

匹配器matcher=pattern.matcher(str);]

4. 然后就可以对该匹配进行操作了。

match.find() 配合appendReplacement(StringBuffer sb, string Replace) 以迭代方式替换原值

或match.replaceFirst(string)

或match.replaceAll(string s)

或者match.find() 和match.group(int i) 迭代取出每个匹配的值i=0 表示整体,i=1 表示正则表达式(1) (2) (3) 1 括起来的值

详细内容

java正则规则详细介绍

Pattern对象

1. Pattern 对象表示已编译的正则表达式。静态compile()方法负责将表示正则表达式的字符串编译为Pattern对象。模式pattern=Pattern.compile(string regx)

2.Pattern还具有静态布尔匹配(字符串正则表达式、字符串输入),可以快速判断输入中是否可以找到正则表达式。

3.还有可以返回String数组的split()方法。它可以使用正则表达式来分割字符串。你需要检查一下。

4、Pattern Pattern.compile(String regex, int flag),这个方法后面有一个flag,进一步强化正则表达式的表达能力。

标志值函数Pattern.CANON_EQPattern.CASE_INSENSITIVE 该标志允许表达式在匹配Pattern 时忽略大小写。COMMENTS 在匹配Pattern.DOTALL 时将忽略空格字符(在正则表达式中)。在此模式下,表达式"."可以匹配任何字符,包括行尾。默认情况下,表达式“.”与行终止符不匹配。 Pattern.MULTILINE 在此模式中,"" 和"$" 分别匹配行的开头和结尾。此外,"" 仍然匹配字符串的开头,而"$" 也匹配字符串的结尾。 Pattern.UNICODE_CASE 在此模式下,如果还启用CASE_INSENSITIVE 标志,它将不区分大小写地匹配Unicode 字符。默认情况下,不区分大小写的匹配仅适用于US-ASCII 字符集。 Pattern.UNIX_LINES 在此模式下,只有"/n" 被视为行尾,并与"."、"^" 和"$" 匹配。

Matcher对象,只要给Pattern.matcher(string regx )方法传一个字符串

1.布尔匹配()

2. booleanlookingAt(),lookingAt()表示Pattern匹配字符串的开头

3、boolean find()的作用是在CharSequence中查找与pattern匹配的多个字符序列。 find() 就像一个迭代器。它从头到尾扫描字符串。

4. boolean find(int start),find()采用int参数。正如您所看到的,它将告诉该方法从哪里开始查找。

5. String group(),Group是指括在括号内的正则表达式,可以被后续表达式调用。组0 表示整个表达式,组1 表示第一个封闭组。

find()可以看作是递归,从sourceString中查找与正则表达式匹配的字符串,然后group函数将值显示出来。 group(0)代表该值,group(1)代表()中包含的正则表达式。第一个值

6.reset()相当于重新跳转一个指针到find()的头部。如果下面的程序没有reset(),第二个while就不会输出。

while(matcher.find()){

System.out.println(matcher.group());

}

匹配器.reset();

while (matcher.find()) {

System.out.println("进来"+matcher.group());

请记住,String 类型有一个replace 方法。可以用replace(matcher.group(0), matcher.group(2))来一一替换这些值。结合Java的正则规则来使用该方法。

替换操作

三种可选的更换操作方式

1.replaceFirst(String replacement)用replacement替换字符串中第一个与模式匹配的子串。

2.replaceAll(字符串替换),用replacement替换输入字符串中所有与模式匹配的子串。

3.appendReplacement(StringBuffer sbuf, String replacement),一般这个需要和match.find()函数结合起来。

//替换第一个匹配的(?第1段)?与xxxx

String source="判断$bracket0$(?第1段)?用$bracket1$$underscore0$来分析$bracket0$的本质(? 第2段)?(? 第3段)?";

//在group(1), group(2), group(3)的正则加法()()()之后使用

String reg="(\(\?th)([1-9]{1,})(section\)\?)";

模式模式=Pattern.compile(reg);

匹配器matcher=pattern.matcher(source);

String resultTemp1=matcher.replaceFirst("xxxx");

System.out.println(resultTemp1);//替换匹配到的(?第1段)?与xxxx

String source="判断$bracket0$(?第1段)?用$bracket1$$underscore0$来分析$bracket0$的本质(? 第2段)?(? 第3段)?";

//在group(1), group(2), group(3)的正则加法()()()之后使用

String reg="(\(\?th)([1-9]{1,})(section\)\?)";

模式模式=Pattern.compile(reg);

匹配器matcher=pattern.matcher(source);

String resultTemp1=matcher.replaceAll("xxxx");

System.out.println(resultTemp1);//获取匹配到的(?第1段)中的数字,替换原来的(?第1段)

String source="判断$bracket0$(?第1段)?用$bracket1$$underscore0$来分析$bracket0$的本质(? 第2段)?(? 第3段)?";

//在group(1), group(2), group(3)的正则加法()()()之后使用

String reg="(\(\?th)([1-9]{1,})(section\)\?)";

模式模式=Pattern.compile(reg);

匹配器matcher=pattern.matcher(source);

StringBuffer stringBuffer=new StringBuffer();

//求递归

while(matcher.find()){

matcher.appendReplacement(stringBuffer, matcher.group(2));//正则表达式reg,第二个(),包含的内容

}

System.out.println(stringBuffer.toString());或者

String source="判断$bracket0$(?第1段)?用$bracket1$$underscore0$来分析$bracket0$的本质(? 第2段)?(? 第3段)?";

//在group(1), group(2), group(3)的正则加法()()()之后使用

String reg="(\(\?th)([1-9]{1,})(section\)\?)";

模式模式=Pattern.compile(reg);

匹配器matcher=pattern.matcher(source);

字符串字符串=空;

//求递归

while(matcher.find()){

string="("+matcher.group(2)+")";

//替换使用String类,替换

source=source.replace(matcher.group(0), string);

用户评论

素婉纤尘

终于学习到了java里面的正则表达式!感觉这个东西太有用啦!

    有16位网友表示赞同!

我就是这样一个人

以前总是手动匹配字符串,现在有了正则表达式真是效率高了好多倍!

    有8位网友表示赞同!

煮酒

想找个好的资源学习java的正则表达式,推荐一下吗?

    有10位网友表示赞同!

ヅ她的身影若隐若现

正则表达式真的挺复杂的,我还在努力理解它的语法规则。

    有6位网友表示赞同!

若他只爱我。

有什么常用的java正则表达式可以分享吗?比如匹配邮箱这类!

    有10位网友表示赞同!

汐颜兮梦ヘ

java的正则表达式在实际项目中非常实用,学起来真值棒!

    有5位网友表示赞同!

水波映月

学习了java的正则表达式后,开发效率果然提升了!

    有10位网友表示赞同!

歆久

java的正则表达式有很多种表达方式,需要慢慢练习体会。

    有12位网友表示赞同!

拉扯

想尝试用java的正则表达式来提取网页上的信息,请问有人做过类似案例吗?

    有16位网友表示赞同!

微信名字

学习正则表达式真是趟辛苦的过程,不过好处还是很大的!

    有12位网友表示赞同!

浅嫣婉语

Java Regular Expression 真的超级无敌强大!学好它太值得了。

    有11位网友表示赞同!

烟雨离殇

在学习java的正则表达式时,最让我头疼的是它的符号含义。

    有16位网友表示赞同!

恰十年

期待了解更多关于java正则表达式的示例和应用场景!

    有8位网友表示赞同!

摩天轮的依恋

我感觉学习java的正则表达式需要一步步来,不能操之过急

    有5位网友表示赞同!

嗯咯

很多时候使用java的正则表达式能够帮你轻松解决字符串匹配的问题!

    有15位网友表示赞同!

孤廖

学会了java的正则表达式后,我终于可以像代码一样精确地处理文本啦!

    有16位网友表示赞同!

绳情

正则表达式真是一个强大的工具,只要熟练掌握,便能轻松驾驭数据。

    有20位网友表示赞同!

我没有爱人i

希望以后能学习到更多的java正则表达式的技巧,让自己更加灵活运用。

    有13位网友表示赞同!

强辩

java的正则表达式应用场景很多,比如验证用户输入、解析文本文件等等!

    有15位网友表示赞同!

歇火

想要用正则表达式来实现一些复杂的规则匹配,还需要继续深入学习 。

    有11位网友表示赞同!

【Java 编程中的正则表达式指南】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:深入解析:网络库入门教程篇一 下一篇:惊世蜕变:美少女剃光头修炼成气功高手的传奇故事