From 02f497bf751fd154618abd75e5cf4942b6c28cee Mon Sep 17 00:00:00 2001 From: Bahaa El-Din Helmy Date: Wed, 31 May 2023 21:09:25 +0300 Subject: [PATCH] Update article "Difference Between \z and \Z in a Regular Expression in Java" (#14151) This commit for "Update article "Difference Between \z and \Z in a Regular Expression in Java"" --- .../z_regexp/ZRegularExpressionUnitTest.java | 62 ++++++++++++++++--- 1 file changed, 55 insertions(+), 7 deletions(-) diff --git a/core-java-modules/core-java-regex-2/src/test/java/com/baeldung/regex/z_regexp/ZRegularExpressionUnitTest.java b/core-java-modules/core-java-regex-2/src/test/java/com/baeldung/regex/z_regexp/ZRegularExpressionUnitTest.java index 90bbbb6540..a24682fc1a 100644 --- a/core-java-modules/core-java-regex-2/src/test/java/com/baeldung/regex/z_regexp/ZRegularExpressionUnitTest.java +++ b/core-java-modules/core-java-regex-2/src/test/java/com/baeldung/regex/z_regexp/ZRegularExpressionUnitTest.java @@ -3,33 +3,81 @@ package com.baeldung.regex.z_regexp; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.regex.Pattern; public class ZRegularExpressionUnitTest { @Test public void givenCreditCardNumber_thenReturnIfMatched() { String creditCardNumber = "1234567890123456"; + String creditCardNumber2 = "1234567890123456\n"; String pattern = "\\d{16}\\z"; - Assertions.assertTrue(creditCardNumber.matches(pattern)); + Assertions.assertTrue(Pattern.compile(pattern).matcher(creditCardNumber).find()); + Assertions.assertFalse(Pattern.compile(pattern).matcher(creditCardNumber2).find()); + } + + @Test + public void givenCreditCardNumber_thenReturnIfNotMatched() { + String creditCardNumber = "1234567890123456\n"; + String pattern = "\\d{16}\\z"; + Assertions.assertFalse(Pattern.compile(pattern).matcher(creditCardNumber).find()); } @Test public void givenLogOutput_thenReturnIfMatched() { String logLine = "2022-05-01 14:30:00,123 INFO Some log message"; String pattern = ".*message\\z"; - Assertions.assertTrue(logLine.matches(pattern)); + Assertions.assertTrue(Pattern.compile(pattern).matcher(logLine).find()); } + @Test + public void givenLogOutput_thenReturnIfNotMatched() { + String logLine = "2022-05-01 14:30:00,123 INFO Some log message\n"; + String pattern = ".*message\\z"; + Assertions.assertFalse(Pattern.compile(pattern).matcher(logLine).find()); + } @Test public void givenEmailMessage_thenReturnIfMatched() { String myMessage = "Hello HR, I hope i can write to Baeldung\n"; - String pattern = ".*Baeldung\\s*\\Z"; - Assertions.assertTrue(myMessage.matches(pattern)); + String myMessage2 = "Hello HR, I hope\n i can write to Baeldung"; + String pattern = ".*Baeldung\\Z"; + String pattern2 = ".*hope\\Z"; + Assertions.assertTrue(Pattern.compile(pattern).matcher(myMessage).find()); + Assertions.assertFalse(Pattern.compile(pattern2).matcher(myMessage2).find()); + } + + @Test + public void givenEmailMessage_thenReturnIfNotMatched() { + String myMessage = "Hello HR, I hope\n i can write to Baeldung"; + String pattern = ".*hope\\Z"; + Assertions.assertFalse(Pattern.compile(pattern).matcher(myMessage).find()); } @Test public void givenFileExtension_thenReturnIfMatched() { - String fileName = "image.jpeg"; + String fileName = "image.jpeg\n"; + String fileName2 = "image2.jpeg\n.png"; String pattern = ".*\\.jpeg\\Z"; - Assertions.assertTrue(fileName.matches(pattern)); + Assertions.assertTrue(Pattern.compile(pattern).matcher(fileName).find()); + Assertions.assertFalse(Pattern.compile(pattern).matcher(fileName2).find()); } -} + @Test + public void givenFileExtension_thenReturnIfNotMatched() { + String fileName = "image2.jpeg\n.png"; + String pattern = ".*\\.jpeg\\Z"; + Assertions.assertFalse(Pattern.compile(pattern).matcher(fileName).find()); + } + @Test + public void givenURL_thenReturnIfMatched() { + String url = "https://www.example.com/api/endpoint\n"; + String pattern = ".*/endpoint$"; + Assertions.assertTrue(Pattern.compile(pattern).matcher(url).find()); + } + + @Test + public void givenSentence_thenReturnIfMatched() { + String sentence = "Hello, how are you?"; + String pattern = ".*[.?!]$"; + Assertions.assertTrue(Pattern.compile(pattern).matcher(sentence).find()); + } + +} \ No newline at end of file