From 370daa8a4c2f918ea921e410cb87cd9be6c90d7c Mon Sep 17 00:00:00 2001 From: Dasun Nirmitha Date: Wed, 28 Apr 2021 21:44:19 +0530 Subject: [PATCH 1/2] Create IgnoringPatternMetacharactersUnitTest.java BAEL-4881 Understanding the Pattern.quote method --- ...IgnoringPatternMetacharactersUnitTest.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 core-java-modules/core-java-regex/src/test/java/com/baeldung/ignore/pattern/metacharacters/IgnoringPatternMetacharactersUnitTest.java diff --git a/core-java-modules/core-java-regex/src/test/java/com/baeldung/ignore/pattern/metacharacters/IgnoringPatternMetacharactersUnitTest.java b/core-java-modules/core-java-regex/src/test/java/com/baeldung/ignore/pattern/metacharacters/IgnoringPatternMetacharactersUnitTest.java new file mode 100644 index 0000000000..47c5089248 --- /dev/null +++ b/core-java-modules/core-java-regex/src/test/java/com/baeldung/ignore/pattern/metacharacters/IgnoringPatternMetacharactersUnitTest.java @@ -0,0 +1,54 @@ +package com.baeldung.ignore.pattern.metacharacters; + +import static org.junit.Assert.assertEquals; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.junit.Test; + +public class IgnoringPatternMetacharactersUnitTest { + private static final String dollarValues = "$100.25, $100.50, $150.50, $100.50, $100.75"; + private static final String patternStr = "$100.50"; + + @Test + public void givenPatternStringHasMetacharacters_whenPatternMatchedWithoutEscapingMetacharacters_thenNoMatchesFound() { + Pattern pattern = Pattern.compile(patternStr); + Matcher matcher = pattern.matcher(dollarValues); + + int matches = 0; + while (matcher.find()) { + matches++; + } + + assertEquals(0, matches); + } + + @Test + public void givenPatternStringHasMetacharacters_whenPatternCompiledUsingManuallyMetaEscapedPattern_thenMatchingSuccessful() { + String metaEscapedPatternStr = "\\Q" + patternStr + "\\E"; + Pattern pattern = Pattern.compile(metaEscapedPatternStr); + Matcher matcher = pattern.matcher(dollarValues); + + int matches = 0; + while (matcher.find()) { + matches++; + } + + assertEquals(2, matches); + } + + @Test + public void givenPatternStringHasMetacharacters_whenPatternCompiledUsingLiteralPatternFromQuote_thenMatchingSuccessful() { + String literalPatternStr = Pattern.quote(patternStr); + Pattern pattern = Pattern.compile(literalPatternStr); + Matcher matcher = pattern.matcher(dollarValues); + + int matches = 0; + while (matcher.find()) { + matches++; + } + + assertEquals(2, matches); + } +} From b182c23f6e14f38c5beaf338daf590a3c79f48db Mon Sep 17 00:00:00 2001 From: Dasun Nirmitha Date: Mon, 10 May 2021 14:54:53 +0530 Subject: [PATCH 2/2] Update IgnoringPatternMetacharactersUnitTest.java Implemented improvements suggested by Editor. --- .../IgnoringPatternMetacharactersUnitTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core-java-modules/core-java-regex/src/test/java/com/baeldung/ignore/pattern/metacharacters/IgnoringPatternMetacharactersUnitTest.java b/core-java-modules/core-java-regex/src/test/java/com/baeldung/ignore/pattern/metacharacters/IgnoringPatternMetacharactersUnitTest.java index 47c5089248..921876c0d5 100644 --- a/core-java-modules/core-java-regex/src/test/java/com/baeldung/ignore/pattern/metacharacters/IgnoringPatternMetacharactersUnitTest.java +++ b/core-java-modules/core-java-regex/src/test/java/com/baeldung/ignore/pattern/metacharacters/IgnoringPatternMetacharactersUnitTest.java @@ -8,13 +8,13 @@ import java.util.regex.Pattern; import org.junit.Test; public class IgnoringPatternMetacharactersUnitTest { - private static final String dollarValues = "$100.25, $100.50, $150.50, $100.50, $100.75"; + private static final String dollarAmounts = "$100.25, $100.50, $150.50, $100.50, $100.75"; private static final String patternStr = "$100.50"; @Test public void givenPatternStringHasMetacharacters_whenPatternMatchedWithoutEscapingMetacharacters_thenNoMatchesFound() { Pattern pattern = Pattern.compile(patternStr); - Matcher matcher = pattern.matcher(dollarValues); + Matcher matcher = pattern.matcher(dollarAmounts); int matches = 0; while (matcher.find()) { @@ -28,7 +28,7 @@ public class IgnoringPatternMetacharactersUnitTest { public void givenPatternStringHasMetacharacters_whenPatternCompiledUsingManuallyMetaEscapedPattern_thenMatchingSuccessful() { String metaEscapedPatternStr = "\\Q" + patternStr + "\\E"; Pattern pattern = Pattern.compile(metaEscapedPatternStr); - Matcher matcher = pattern.matcher(dollarValues); + Matcher matcher = pattern.matcher(dollarAmounts); int matches = 0; while (matcher.find()) { @@ -42,7 +42,7 @@ public class IgnoringPatternMetacharactersUnitTest { public void givenPatternStringHasMetacharacters_whenPatternCompiledUsingLiteralPatternFromQuote_thenMatchingSuccessful() { String literalPatternStr = Pattern.quote(patternStr); Pattern pattern = Pattern.compile(literalPatternStr); - Matcher matcher = pattern.matcher(dollarValues); + Matcher matcher = pattern.matcher(dollarAmounts); int matches = 0; while (matcher.find()) {