3

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

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>";

我正在尝试获取“<Mytag”和“>”之间的子字符串

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

我已经尝试过使用 Scanner 并将我成功获得第一个字符串的所有内容都设置为子字符串,但出现第二次和第三次出现的问题。

在子字符串方法中,我成功获得了所有标签“<Mytag”的索引,但无法获得“>”的正确索引,因为它也带有粗体和斜体。

4

2 回答 2

4

为此使用正则表达式:-

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

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

于 2012-12-03T06:31:09.983 回答
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 正则表达式教程。

于 2012-12-03T06:42:10.993 回答