From a14a00bc7f6efec5c9e872eecd5348de7a5d980c Mon Sep 17 00:00:00 2001 From: Alhuda Khan Date: Fri, 26 Jun 2026 13:16:26 +0530 Subject: [PATCH] Fix WordUtils.containsAllWords missing words across line breaks --- src/main/java/org/apache/commons/text/WordUtils.java | 2 +- src/test/java/org/apache/commons/text/WordUtilsTest.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/commons/text/WordUtils.java b/src/main/java/org/apache/commons/text/WordUtils.java index e03024a403..59ac636b89 100644 --- a/src/main/java/org/apache/commons/text/WordUtils.java +++ b/src/main/java/org/apache/commons/text/WordUtils.java @@ -280,7 +280,7 @@ public static boolean containsAllWords(final CharSequence word, final CharSequen if (StringUtils.isBlank(w)) { return false; } - final Pattern p = Pattern.compile(".*\\b" + Pattern.quote(w.toString()) + "\\b.*"); + final Pattern p = Pattern.compile(".*\\b" + Pattern.quote(w.toString()) + "\\b.*", Pattern.DOTALL); if (!p.matcher(word).matches()) { return false; } diff --git a/src/test/java/org/apache/commons/text/WordUtilsTest.java b/src/test/java/org/apache/commons/text/WordUtilsTest.java index 078ab1aebc..f88483df44 100644 --- a/src/test/java/org/apache/commons/text/WordUtilsTest.java +++ b/src/test/java/org/apache/commons/text/WordUtilsTest.java @@ -212,6 +212,14 @@ void testContainsAllWords_StringString() { assertTrue(WordUtils.containsAllWords("ab x", "ab", "x")); } + @Test + void testContainsAllWordsWithNewline() { + assertTrue(WordUtils.containsAllWords("foo\nbar", "bar")); + assertTrue(WordUtils.containsAllWords("foo\nbar", "foo")); + assertTrue(WordUtils.containsAllWords("lorem ipsum\ndolor sit\namet", "ipsum", "amet", "lorem")); + assertFalse(WordUtils.containsAllWords("foo\nbar", "baz")); + } + @Test void testContainsAllWordsWithNull() { assertFalse(WordUtils.containsAllWords("M", (CharSequence) null));