gpt4 book ai didi

java - 多行 REGEX - 仅匹配第一行,忽略其余行

转载 作者:行者123 更新时间:2023-11-30 03:28:53 25 4
gpt4 key购买 nike

以下是获取远程 SMTP 服务器名称的方法:

public static String getMTAName(String data) {

Pattern p = Pattern.compile("^\\d{3}[ -](.*?)( .*)*$");
Matcher m = p.matcher(data);
if (m.find()) {
return m.group(1);
}

return "undefined";
}

问题是,如果我传递多行响应,例如:

String s = "220-xsistema.lt ESMTPSA XMailServer 1.2 service ready\r\n220 Some other info";
System.out.println(getMTAName(s));

输出为“未定义”。但如果:

s = "220-xsistema.lt ESMTPSA XMailServer 1.2 service ready";

然后一切正常 - 输出是“xsistema.lt”。我的问题是 - 如何仅匹配第一行?

最佳答案

. 默认情况下与 newline 不匹配。因此请使用 [\s\S] 而不是 .或使用 DOTALL 标志,

Pattern.DOTALL(?s) 告诉 Java 也允许点匹配换行符。

模式正则表达式 = Pattern.compile("^\\d{3}[ -](.*?)(.*)*$", Pattern.DOTALL);

关于java - 多行 REGEX - 仅匹配第一行,忽略其余行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29546134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com