Skip to content

Commit 5fe97da

Browse files
author
MerkushevKirill
committed
fix - don't create additional capture when use OR
1 parent 65e42b2 commit 5fe97da

File tree

4 files changed

+12
-9
lines changed

4 files changed

+12
-9
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ public Builder atLeast(final int from) {
537537
* @return this builder
538538
*/
539539
public Builder or(final String pValue) {
540-
this.prefixes.append("(");
540+
this.prefixes.append("(?:");
541541

542542
int opened = countOccurrencesOf(this.prefixes.toString(), "(");
543543
int closed = countOccurrencesOf(this.suffixes.toString(), ")");

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -348,9 +348,9 @@ public void testOrWithCapture() {
348348
assertThat("Starts with abc or def", testRegex, matchesTo("abczzz"));
349349
assertThat("Doesn't start with abc or def", testRegex, not(matchesExactly("xyzabcefg")));
350350

351-
assertThat(testRegex.getText("xxxabcdefzzz", 1), equalTo("abcdef"));
352-
assertThat(testRegex.getText("xxxdefzzz", 2), equalTo("null"));
353-
assertThat(testRegex.getText("xxxabcdefzzz", 2), equalTo("abcnull"));
351+
assertThat(testRegex.getText("xxxabcdefzzz", 1), equalTo("abcnull"));
352+
assertThat(testRegex.getText("xxxdefzzz", 1), equalTo("null"));
353+
assertThat(testRegex.getText("xxxabcdefzzz", 1), equalTo("abcnull"));
354354
}
355355

356356

@@ -367,8 +367,8 @@ public void testOrWithClosedCapture() {
367367
assertThat("Doesn't start with abc or def", testRegex, not(matchesExactly("xyzabcefg")));
368368

369369
assertThat(testRegex.getText("xxxabcdefzzz", 1), equalTo("abcnull"));
370-
assertThat(testRegex.getText("xxxdefzzz", 2), equalTo("null"));
371-
assertThat(testRegex.getText("xxxabcdefzzz", 2), equalTo("abcnull"));
370+
assertThat(testRegex.getText("xxxdefzzz", 1), equalTo("null"));
371+
assertThat(testRegex.getText("xxxabcdefzzz", 1), equalTo("abcnull"));
372372
}
373373

374374
@Test

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,7 @@ public void orAfterCaptureProduceEmptyGroup() throws Exception {
6363
assertThat(regex.toString(), containsString("()|"));
6464

6565
assertThat("regex dont matches string abcd", regex.getText("abcd", 0), equalTo("a"));
66-
assertThat("regex dont extract a by first group", regex.getText("abcd", 1), equalTo("a"));
67-
assertThat("second group should produce empty string", regex.getText("abcd", 2), equalTo(""));
68-
66+
assertThat("regex dont extract a by first group", regex.getText("abcd", 1), equalTo(""));
6967
}
7068

7169
@Test

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,11 @@ public void complexPatternWithMultiplyCaptures() throws Exception {
9898
*/
9999
}
100100

101+
@Test
102+
public void unusualRegex() throws Exception {
103+
assertThat(regex().add("[A-Z0-1!-|]").build().toString(), equalTo("[A-Z0-1!-|]"));
104+
105+
}
101106

102107
@Test
103108
@Ignore("Planned in 1.3")

0 commit comments

Comments
 (0)