正则表达式如何获取匹配的部分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式如何获取匹配的部分相关的知识,希望对你有一定的参考价值。

String str = "sdfqweid=icmp_77733329&234123";
Pattern pattern = Pattern.compile("\\d8");
Matcher matcher = pattern.matcher(str);
String tempStr = matcher.group(1);
System.out.println(tempStr);
为什么不行呢,我想获取77733329

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

而且你matcher.group(1)是获取第一个分组,但是你没有使用分组,所以得不到内容。
如果正则改成"(\\d8)",那你就可以获得内容了。

或者String tempStr = matcher.group();或者String tempStr = matcher.group(0);,这会得到整个正则匹配到的内容。
参考技术A 要的那一部分用()括上,取组就行了
或者取出来后再来一次正则匹配
参考技术B String str = "sdfqweid=icmp_77733329&234123";
String reg = "\\\\d+";
Pattern pattern = Pattern.compile (reg);
Matcher matcher = pattern.matcher (str);
while (matcher.find ())

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

追问

为啥加了matcher.find就可以了???

追答

这个就像是1+1=2道理一样,我也不好说,我半吊子,就是知道这样写就是了

本回答被提问者和网友采纳

在javascript匹配中获取正则表达式的单独部分[重复]

【中文标题】在javascript匹配中获取正则表达式的单独部分[重复]【英文标题】:Getting separate parts of a regex in javascript match [duplicate] 【发布时间】:2011-10-02 01:38:49 【问题描述】:

我在 javascript 中有以下正则表达式。我想匹配一个字符串,所以它的product (,|x) quantity, each price。以下正则表达式执行此操作;但是它返回一个只有一个元素的数组。我想要一个数组,它首先返回整个匹配的字符串,然后是产品、数量、每个价格。

// product,| [x] quantity, each price:
var pQe = inputText.match(/(^[a-zA-z -]+)(?:,|[ x ]?) (\d0,3), (?:each) ([£]\d+[.]?\d0,2)/g);

(,|x) 表示后跟逗号或x,所以会匹配ice-cream, 99, $99ice-cream x 99, $99

我该怎么做?

【问题讨论】:

原来我必须删除/g,我把它改成了/i。总之谢谢大家。有人可以删除这个问题,因为我没有注册。 【参考方案1】:

使用 RegExp 对象的 exec 函数。为此,您必须将语法更改为以下内容:

 var pQe = /(^[a-z ... 0,2)/g.exec(inputText)

返回数组的元素 1 将包含匹配的第一个元素,元素 2 将包含第二个元素,依此类推。如果字符串与正则表达式不匹配,则返回 null。

【讨论】:

无需切换到使用exec。他们使用的 match 函数也返回匹配数组。

以上是关于正则表达式如何获取匹配的部分的主要内容,如果未能解决你的问题,请参考以下文章

js 正则获取匹配部分最后一个内容

正则表达式:获取字符串的匹配和“不匹配”部分

正则表达式如何替换并修改自身的部分内容?

在javascript匹配中获取正则表达式的单独部分[重复]

从正则表达式仅返回部分匹配项

从正则表达式仅返回部分匹配项