java - 为什么带有换行符的字符串与Java中的正则表达式不匹配?

标签 java regex string newline

我有一个包含换行符 (\n) 的字符串string。当我尝试将其与正则表达式 pattern 匹配时,它返回 false,尽管应该有匹配。

package com.stackoverflow;

public class ExgExTest {

    public static void main(String[] args) {
        String pattern = ".*[0-9]{2}[A-Z]{2}.*";
        String string  = "123ABC\nDEF";

        if (string.matches(pattern)) {
            System.out.println("Matches.");
        } else {
            System.out.println("Does not match.");
        }

    } // END: main()

} // END: class

如何将多行字符串与正则表达式匹配?

最佳答案

How can I match multiline strings with a regular expression?

为此,您需要使用 DOTALL (s) 标志:

String pattern = "(?s).*[0-9]{2}[A-Z]{2}.*";

记下(?s),这将使DOT也匹配新行。

关于java - 为什么带有换行符的字符串与Java中的正则表达式不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25884647/

相关文章:

regex - sed:未终止的 `s' 命令 - 无法弄清楚需要转义的内容

提取数字的 Javascript 正则表达式

string - perl null 或空检测

android - Java代码中的硬编码字符串与@string - Android

java - 如何从 Document 或 Node 创建 InputStream

java - 网格布局——共享相对空间

javascript - 使用对象属性构造正则表达式时量词无效

string - 检查字符串是否包含 2 个数字

java - 使用 InterfaceType 进行对象初始化

java - 为什么这段代码会以 "Socket setup caught IOexception"循环