如何在字符串Java中获取通配符的值?

时间:2015-01-02 00:43:50

标签: java javascript regex string parsing

此代码在javascript中工作,是否可以在java中执行类似的操作? (获取字符串中的通配符的值)

    var a = "HI MY NAME IS BOB"

    var b = /HI MY NAME IS (.*)/

    alert("HI " + b.exec(a)[1])

4 个答案:

答案 0 :(得分:1)

您可能需要找到已捕获的第1组

Pattern p = Pattern.compile("(?i)Hi MY NAME IS (.*)");
Matcher m = p.matcher("Hi MY NAME IS BOB");
if (m.find()) {
     System.out.println( "Group #1: " + m.group(1) ); // BOB
}
  • (?i)用于忽略大小写匹配
  • m.group(1)会从您的正则表达式中提供第一个捕获组的值,即(.*)

答案 1 :(得分:1)

您正在寻找的是java.util.regex套餐。

正则表达式的语法是一个完全不同的答案,但我假设你在这里稍微熟悉它。

要在Java中使用正则表达式,您需要创建两个对象,PatternMatcher

引用文档,Pattern对象是"正则表达式#34;和Matcher对象的编译表示是"执行匹配操作的引擎通过解释Pattern来确定字符序列。"

换句话说,您使用Pattern来定义正则表达式,并使用Matcher来应用它。

所以让我们逐行采用:

import java.util.regex.*;
String a = "MY NAME is BOB";

显然,你需要导入包并定义你要将正则表达式应用到的字符串。

Pattern wildcard = Pattern.compile("HI MY NAME IS (.*)");

Pattern.compile使用代表正则表达式的String并返回Pattern

Matcher match = wildcard.matcher(a);

Pattern个对象有一个实例方法matcher,它接受​​您要应用Pattern的字符串,并返回Matcher

System.out.println(match.group(1));

调用match.group(n)返回匹配n th 括号组的字符串(更准确地说,n th 捕获组)你的正则表达式。 match.group(0),相当于match.group(),返回表示整个匹配的字符串。在这种情况下,我们会使用match.group(1),因为我们希望匹配正则表达式中唯一的括号集 - 最后是(.*)

总而言之,我们得到:

import java.util.regex.*;
String a = "MY NAME is BOB";
Pattern wildcard = Pattern.compile("HI MY NAME IS (.*)");
Matcher match = wildcard.matcher(a);
System.out.println(match.group(1));

答案 2 :(得分:0)

您需要的课程是Pattern。它的功能类似于regex,但机制不同。 Here是文档的链接。

答案 3 :(得分:0)

这并不完全是你所要求的,但我想尝试一点帮助。你可以打印出来" BOB"使用substring()。这对我有用:String a = new String("我的名字是Bob"); System.out.printf("此打印为Bob \ n%s",a.substring(14));子字符串从索引14开始并打印到字符串的末尾。