用正则表达式匹配内容里面包含id="media_1"、id="media_2"、id="media_3"这种形式的数据提取1、2、3出来

应该需要用到分组,但是我不会写,请大家帮忙写下。... 应该需要用到分组,但是我不会写,请大家帮忙写下。 展开
 我来答
百度网友b0905b3
2013-10-15 · TA获得超过293个赞
知道小有建树答主
回答量:286
采纳率:100%
帮助的人:280万
展开全部
需要用两次正则表达式匹配:

第一次:使用正则表达式 id="media_[0-9]+" 得到 类似id="media_1"这样的数据

第二:使用正则表达式 [0-9]+匹配第一次得到的结果,然后得到1、2、3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shelher
2013-10-15 · TA获得超过6134个赞
知道大有可为答主
回答量:3609
采纳率:100%
帮助的人:6252万
展开全部
一下是C#代码
你需要的正则表达式是
(?<=id=.media_)(\d+)(?=.、)

var text = richTextBox1.Text;
var matches = Regex.Matches(text, @"(?<=id=""media_)(\d+)(?=""、)");
foreach (Match match in matches)
{
var 你需要的数据 = match.Groups[1].Value;
}
追问
能帮我解释下你写的这个正则的含义吗,让我学习下?
追答
(?<=id=.media_)(\d+)(?=.、)

其中
(?<=....) 则个结构表示要匹配...的内容,但是只匹配,不捕获,意思就是例如一个字符串为12356789,其中(?<=567) 表示定位到567这个位置,然后找567后面的文本是否匹配你接下来要写的正则表达式
因此(?<=id=.media_)的意思就是定位到id="media_这个位置,然后看其后面的文本是不是(\d+)即,是不是由一个或者多个数字组成,
如果是的话那么要看数字后面跟的是否是(?=.、)

其中(?=....)的意思也是只匹配,不捕获,他是看...以前的内容,也就是说如果一个字符串为123456789那么(?=567)的意思是看找到567这个位置,然后看其前面的内容是否是(\d+)即,是不是由一个或者多个数字组成

综上(?<=id=.media_)(\d+)(?=.、)中(?<=...)与(?=...)结构限定了(\d+)的前后

对应你的文本也就是id="media_1"中数字1的前后
明白了吗 还有一点就是我的正则表达式应该换成
var matches = Regex.Matches(text, @"(?<=id=""media_)(\d+)(?="")");
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c5bcb7af742
2017-05-03 · TA获得超过2.2万个赞
知道小有建树答主
回答量:1.2万
采纳率:47%
帮助的人:595万
展开全部
Javascript正则表达式/"token-id": "([^\"]*?)"/g 取第一捕获组的数据
我给你一个Javascript语言的例子,你看看吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
筒诜遮葡9C
2013-10-15 · 超过29用户采纳过TA的回答
知道答主
回答量:121
采纳率:0%
帮助的人:63.7万
展开全部
java代码
正则表达式: id=\"media_(\\d*)\"
public void testMatches() {
String str="id=\"media_1\"、id=\"media_2\"、id=\"media_3\"";
Matcher mat = Pattern.compile("id=\"media_(\\d*)\"").matcher(str);
while(mat.find()){
String matStr = mat.group(1);
System.out.println(matStr);
}
}
试试,看是不是你要的效果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式