怎样获取正则表达式匹配字符串的一部分

怎样获取正则表达式匹配字符串的一部分,第1张

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

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。

首先你要matcherfind(); 因为patternmatcher(str);只是配置了matcher,必须调用find函数才会开始匹配。

而且你matchergroup(1)是获取第一个分组,但是你没有使用分组,所以得不到内容。

如果正则改成"(\\d{8})",那你就可以获得内容了。

或者String tempStr = matchergroup();或者String tempStr = matchergroup(0);,这会得到整个正则匹配到的内容。

不一定要正则的。字符串截取也行。

var str = '<a href="javascript:;" onclick="showWindow(\'dmo_vots\',\'pluginphpid=votes:vote&appid=34&formhash=a45078c7\',\'get\',0)">投一票</a>';str = strsplit('formhash=');str = str[1]split('\'');alert(str[0]);

一、获取img标签的src属性值

var imgStr = "<p><img src='>

假设我们要获取下面html标签中的内容:

第一段是获取 <p></p> 标签内部的数据,第二个是获取 <p><span></span></p> 标签中的数据,其中span标签中有style属性值。

使用过正则表达式的同学肯定知道,上面两种情况其实都是一种情况,我们要获取的是 尖括号括起来的一对标签 中间的数据,起始标签形如<x>,结束标签形如</x>,这里的x表示的html标签。

此外,我们还需要考虑起始标签中包含style的数据,另外特殊的 <br/> 标签,对实际获取数据无意义,也需要过滤掉。

通过上面的分析,我们可以如下正则表达式:

在使用正则表达式处理之前,我们先对数据进行预处理,比如style和

标签:

针对多个标签嵌套的情况进行处理,比如 <p><span style="white-space: normal;">王者荣耀</span></p> ,在经过预处理和正则匹配的后结果是 <span>王者荣耀 ,需要手工移除掉前面的起始标签,对应的方法如下:

测试方法如下:

output:

可以使用re模块中的search或finditer函数来获取正则表达式匹配的文本之后的数据。search函数返回第一个匹配的对象,finditer函数返回一个迭代器,可以遍历所有匹配对象。在匹配对象上调用group()函数可以获取匹配的数据。

示例代码:

实现的效果:在字符串中abcdefgname='test'sddfhskshjsfsjdfps中获取name的值test 

实现的机制:通过replace的回调函数获取。

可以通过下面的代码获取匹配部分

var str = "abcdefgname='test'sddfhskshjsfsjdfps";

var reg = /name='((\w|-|\s)+)/ig;

strreplace(reg, function() { 

consolelog(argumentslength); //5 

consolelog(arguments[1]);//test 

});

字符串 stringObject 的 replace() 方法执行的是查找并替换的 *** 作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

以上就是关于怎样获取正则表达式匹配字符串的一部分全部的内容,包括:怎样获取正则表达式匹配字符串的一部分、正则表达式如何获取匹配的部分、如何利用正则表达式 获取<script> 标签中的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存