我需要一些帮助才能从字符串中提取多个子字符串。字符串的示例如下所示:
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;”索引因为它也带有粗体和斜体。
答案 0 :(得分:4)
使用正则表达式: -
"<Mytag ([^>]*)>"
从上面的正则表达式中获取group 1
。您需要将其与Pattern
和Matcher
类一起使用,并使用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));
}
}
}