Skip to content

Instantly share code, notes, and snippets.

@lawrenceching
Created December 3, 2020 13:51
Show Gist options
  • Save lawrenceching/f9ae43c88964bab056a04dad05fd680e to your computer and use it in GitHub Desktop.
Save lawrenceching/f9ae43c88964bab056a04dad05fd680e to your computer and use it in GitHub Desktop.
How to match same pattern for multiple times
package me.imlc.one;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RegExpTest {
private Logger logger = LoggerFactory.getLogger(RegExpTest.class);
@Test
void oneGroup_MultipleTimes() {
Pattern pattern = Pattern.compile("<[^>]*>");
Matcher matcher = pattern.matcher("<A>, <B>, <C>");
while(matcher.find()) {
logger.info("Found {}", matcher.group());
}
}
@Test
void oneGroup_MultipleTimes_DoubleQuote() {
Pattern pattern = Pattern.compile("\"[^\"*]\"");
Matcher matcher = pattern.matcher("\"A\" - \"B\" - \"C\"");
while(matcher.find()) {
logger.info("Found {}", matcher.group());
}
}
@Test
void multipleGroup() {
Pattern pattern = Pattern.compile("key=(.+), value=(.+)");
Matcher matcher = pattern.matcher("key=name, value=Alice");
while(matcher.find()) {
logger.info("Found {}", matcher.group());
}
}
@Test
void namedGroup_multipleTimes() {
Pattern pattern = Pattern.compile("key=(?<name>.+), value=(?<value>.+)");
Matcher matcher = pattern.matcher(
"key=name, value=Alice\n"
+ "key=id, value=213159");
while(matcher.find()) {
logger.info("Found {}: {}}", matcher.group("name"), matcher.group("value"));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment