【问题标题】:Java regex does not match multiline string [duplicate]Java正则表达式不匹配多行字符串[重复]
【发布时间】:2020-06-03 20:10:53
【问题描述】:

对不起,我是 Java 新手。我需要匹配 Java 中的多行字符串,如下所示:

meno je povinné pole
priezvisko je povinné pole
heslo je povinné pole
email je povinné pole
email nemá platný formát
musíte súhlasiť s podmienkami

这是匹配此字符串的模式。

Pattern p = Pattern.compile("meno.+heslo", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.MULTILINE);
Matcher m = p.matcher(alert.getText().toLowerCase());  // text from the example

这有什么问题?如果我只测试第一行,它就可以工作。所以我认为问题就出在这条线上。

【问题讨论】:

  • . 与换行符不匹配,请尝试使用meno[\s\S]+heslo
  • Pattern.MULTILINE 不修改点行为?
  • 不,它没有,这是由/s singleline / dotall 标志完成的。
  • 答案已经在这里了。您的回答不适用于 Java。问题是关于 Pattern.DOTALL 标志
  • 它仍然是重复的。如果你搜索,你可以找到几十个,例如stackoverflow.com/questions/17824211/…

标签: java regex multilinestring


【解决方案1】:

. 将不匹配换行符,要解决此问题,请在编译模式时使用 DOTALL 标志。

 Pattern.DOTALL

MULTILINE 标志只会执行以下操作:

“在多行模式下,表达式 ^ 和 $ 分别匹配行终止符或输入序列的结尾。”

【讨论】:

    猜你喜欢
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多