java正则表达式如何获取字符串中所有匹配内容

java正则表达式如何获取字符串中所有匹配内容,第1张

一、正则表达式基础知识

11 句点符号  

在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。另外,假设有一本英文字典,可以用正则表达式搜索全部内容。要构造出这个正则表达式,可以使用一个通配符——句点符号“”。这样,完整的表达式就是“tn”,匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”,还有其许多无意义的组合。这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符:  

13 “或”符号

如果除了上面匹配的所有单词之外,还想要匹配“toon”,那么,可以使用“|” *** 作符。“|” *** 作符的基本意义就是“或”运算。要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号“()”。圆括号还可以用来分组。

14 表示匹配次数的符号  

下表显示了正则表达式的语法:

表 11 正则表达式语法

要在文本文件中搜索美国的社会安全号码。这个号码的格式是999-99-9999。用来匹配的正则表达式如图一所示。在正则表达式中,连字符(“-”)有着特殊的意义,表示一个范围,比如从0到9。因此,匹配社会安全号码中的连字符号时,前面要加上一个转义字符“/”。

15 “否”符号  

“^”符号称为“否”符号。如果用在方括号内,“^”表示不想要匹配的字符。例如,图四的正则表达式匹配所有单词,但以“X”字母开头的单词除外。

16 圆括号和空白符号

“/s”符号是空白符号,匹配所有的空白字符,只需在月份周围加上一个圆括号创建一个组,然后用ORO API提取出值。

17 其它符号

为简便起见,可以使用一些为常见正则表达式创建的快捷符号。如以下所示:

以下是整理出来的程序:供参考:

使用正则表达式获取匹配字符串时

Pattern mpattern = Patterncompile("<title>()</title>");

Matcher mmatcher = mpatternmatcher(xml);

ArrayList<String> arrayList_title = new ArrayList<String>();

while(mmatcherfind())

arrayList_titleadd(mmatchergroup());

2.1 元字符

在正则表达式中,元字符(Metacharacter)是一类非常特殊的字符,它能够匹配一个位置或字符集合中的一个字符,如:、 \w等。根据功能,元字符可以分为两种类型:匹配位置的元字符和匹配字符的元字符。

2.1.1 匹配位置的元字符

包括:^、$、和\b。其中^(脱字符号)和$(美元符号)都匹配一个位置,分别匹配行的开始和结尾。比如,^string匹配以string开头的行,string$匹配以string结尾的行。^string$匹配以string开始和结尾的行。单个$匹配一个空行。单个^匹配任意行。\b匹配单词的开始和结尾,如:\bstr匹配以str开始的单词,但\b不匹配空格、标点符号或换行符号,所以,\bstr可以匹配string、string fomat等单词。\bstr正则表达式匹配的字符串必须以str开头,并且str以前是单词的分界处,但此正则表达式不能限定str之后的字符串形式。以下正则表达式匹配以ing结尾的字符串,如string、This is a string等

Ing\b

正则表达式ing\b匹配的字符串必须以ing结尾,并且ing后是分界符,以下正则表达式匹配一个完整的单词:\bstring\b。

212 匹配字符的元字符

匹配字符的元字符有7个:(点号)、\w、\W、、s\、\S、\d和\D。其中点号匹配除换行之外的任意字符;\w匹配单词字符(包括字母、汉字、下划线和数字);\W匹配任意非单词字符、\s匹配任意的空白字符,如空格、制表符、换行等;\S匹配任意的非空白字符;\d匹配任意数字字符;\D匹配任意的非数字字符。如:

^$匹配一个非空行,在该行中可以包含除了换行符以外的任意字符。

^\w$匹配一个非空行,并且该行中只能包含字母、数字、下划线和汉字中的任意字符。

\ba\w\w\w\w\w\w\\b匹配以字母a开头长度等于7的任意单词

\ba\w\w\w\d\d\d\D\b匹配以字母a开头后面有3个字符三个数字和1个非数字字符长度等于8的单词

22 字符类

字符类是一个字符集合,如果该字符集合中的任何一个字符被匹配,则它会找到该匹配项。字符类可以在[](方括号)中定义。如:

[012345]可以匹配数字0到5中的任意一个。

<H[123456]>可以匹配HTML标签中的H1到H6。

[Jj]ack可以匹配字符串Jack或jack。

左右两边代表以引号开始,和以引号结束。就是断言,分支条件而已。。不会计入结果的。

中间代表除换行以外的任意字符。。。引号中间有换行就不不匹配乐。

vbs脚本中(<=\")(=\")可以只写成(<=")(=")

以上就是关于java正则表达式如何获取字符串中所有匹配内容全部的内容,包括:java正则表达式如何获取字符串中所有匹配内容、怎样获取正则表达式匹配字符串的一部分、JS正则表达式问题(<=\").*(=\")等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9701193.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存