Reputation: 1163
I need some help to extract multiple substrings from a string. An example of a string is as given below:
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>";
I am trying to get substrings Between "<Mytag" and ">"
so my desire output will be
1) a exp 5 exp 3
2) yx4
3) 3xy4
I have tried with Scanner and substring everything I getting first string successfully but the problem with getting second and third occurrence.
in substring methods I am successfully getting index of all tages "<Mytag" but not able to get correct index of ">" because it comes with Bold and italic also.
Upvotes: 3
Views: 4548
Reputation: 2363
As Rohit Jain said, with regular expressions. Here is functional code:
// 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));
}
}
}
Source: Java Regex tutorial.
Upvotes: 3
Reputation: 213203
Use Regex for that: -
"<Mytag ([^>]*)>"
And get the group 1
from the above regex. You need to use it with Pattern
and Matcher
class, and use Matcher#find
method with a while
loop to find all the matching substrings.
Upvotes: 4