Skip to content

Commit d1154fb

Browse files
committed
Merge pull request #42 from redwerk/improvement#28
Added list of matching groups #28
2 parents eaa962e + dc4b95c commit d1154fb

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

src/main/java/ru/lanwen/verbalregex/VerbalExpression.java

+17
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import static java.lang.String.valueOf;
44

5+
import java.util.ArrayList;
6+
import java.util.List;
57
import java.util.regex.Matcher;
68
import java.util.regex.Pattern;
79

@@ -746,6 +748,21 @@ public String getText(final String toTest, final int group) {
746748
return result.toString();
747749
}
748750

751+
/**
752+
* Extract exact group from string and add it to list
753+
*
754+
* @param toTest - string to extract from
755+
* @param group - group to extract
756+
* @return list of extracted groups
757+
*/
758+
public List<String> getTextGroups(final String toTest, final int group) {
759+
List<String> groups = new ArrayList<>();
760+
Matcher m = pattern.matcher(toTest);
761+
while (m.find()) {
762+
groups.add(m.group(group));
763+
}
764+
return groups;
765+
}
749766

750767
@Override
751768
public String toString() {

src/test/java/ru/lanwen/verbalregex/BasicFunctionalityUnitTest.java

+21
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import org.junit.Test;
44

5+
import java.util.List;
6+
57
import static org.hamcrest.CoreMatchers.*;
68
import static org.junit.Assert.*;
79
import static ru.lanwen.verbalregex.VerbalExpression.regex;
@@ -606,4 +608,23 @@ public void shouldAddMaybeWithOneOfFromAnotherBuilder() {
606608
assertThat("Is a name without prefix", name, matchesTo("James"));
607609

608610
}
611+
612+
@Test
613+
public void testListOfTextGroups() {
614+
String text = "abczbcayyy";
615+
VerbalExpression regex = regex()
616+
.capture()
617+
.oneOf("abc", "bca", "yyy")
618+
.build();
619+
620+
List<String> groups = regex.getTextGroups(text, 1);
621+
622+
assertThat(groups.get(0), equalTo("abc"));
623+
assertThat(groups.get(1), equalTo("bca"));
624+
assertThat(groups.get(2), equalTo("yyy"));
625+
626+
String concatenatedText = groups.get(0) + groups.get(1) + groups.get(2);
627+
628+
assertThat(regex.getText(text, 1), equalTo(concatenatedText));
629+
}
609630
}

0 commit comments

Comments
 (0)