如何从Android / Java中的字符串中获取多个子字符串?

时间:2012-12-03 06:28:07

标签: java regex string

我需要一些帮助才能从字符串中提取多个子字符串。字符串的示例如下所示:

String str = "What is <Mytag a exp 5 exp 3> written as a single power of <i>a</i> <Mytag yx4> and the double power of <b>x+y</b> <Mytag 3xy4>";

我想在“&lt; Mytag”和“&gt;”之间获得子串

所以我的愿望输出将是
1)exp 5 exp 3 2)yx4
3)3xy4

我已经尝试使用Scanner并将我获得第一个字符串的所有字符串成功,但是第二次和第三次出现的问题。

在子字符串方法中我成功获得所有tages“&lt; Mytag”的索引,但无法获得正确的“&gt;”索引因为它也带有粗体和斜体。

2 个答案:

答案 0 :(得分:4)

使用正则表达式: -

"<Mytag ([^>]*)>"

从上面的正则表达式中获取group 1。您需要将其与PatternMatcher类一起使用,并使用Matcher#find方法和while循环来查找所有匹配的子字符串。

答案 1 :(得分:3)

正如 Rohit Jain 所说,用正则表达式。这是功能代码:

// import java.io.Console;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegexTestHarness {

  public static void main(String[] args){
    // Console console = System.console();  // Not needed

    Pattern pattern = Pattern.compile("<Mytag([^>]*)>");

    String myString = "What is <Mytag a exp 5 exp 3> written as a single power of <i>a</i> <Mytag yx4> and the double power of <b>x+y</b> <Mytag 3xy4>";
    Matcher matcher = pattern.matcher(myString);

    while (matcher.find()) {
      // Rohit Jain observation
      System.out.println(matcher.group(1));
    }

  }
}

来源:Java Regex tutorial.