从字符串中提取子字符串(包含动态部分)?

时间:2014-03-25 03:31:34

标签: java regex string pattern-matching extract

假设我有一个位于较大字符串中的以下子字符串:

  

我的名字是{name}

{name}只是一个占位符,因为每次运行程序时它可能都不同。例如:

  

运行#1:您好,我的名字是 Phil!很高兴见到您。

     

运行#2:我的名字是 Robert ,我真的很酷。

我怎样才能(以最简洁的方式):

  1. 验证字符串是否包含My name is {name}子字符串? (不区分大小写)
  2. {name}部分提取到一个单独的变量中,我可以用它做什么?

1 个答案:

答案 0 :(得分:2)

你可以这样做:

String s = "Hi there! My name is Phil. Nice to meet you.";
Pattern p = Pattern.compile("my name is (\\w*)", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(s);
if (m.find()) {
    System.out.println(m.group(1));
} else {
    System.out.println("No match to " + s);
}

(\\w*)创建一个包含所有"字符"的捕获组。可以在PatternMatcher的文档中找到更多信息。

P.S。通过所有编辑很难跟踪您的要求。我希望这符合你的需要。如果没有,修改它应该相当简单。