gpt4 book ai didi

Java/Scala 提取电子邮件和格式为 email[delimiter]string 的字符串

转载 作者:行者123 更新时间:2023-12-01 20:57:20 26 4
gpt4 key购买 nike

我有一堆字符串,我希望以以下格式解析它们,并仅提取电子邮件和字符串,后跟分隔符

email[delimiter]string 

换句话说[包含任何 ASCII 字符的电子邮件][分隔符][包含任何 ASCII 字符的字符串]

分隔符可以是,;:|或||例如

abc@xyz.com,blah
abc@xyz.au;blah1
abc@xyz.ru:blah2
abc@xyz.ru|blah,2
abc@xyz.ru||blah2

到目前为止,我的进展是遵循正则表达式来匹配上述字符串,但是如何修改此正则表达式,以便我可以形成适当的组来仅提取电子邮件和后面跟 Java/Scala 中的分隔符的字符串

.+@.+([:;,|])+.+$

Java 代码看起来像这样:

// Create a Pattern object
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);

if (m.find()) {
System.out.println("Email: " + m.group(0));
System.out.println("Value: " + m.group(1));
} else {
System.out.println("NO MATCH");
}

最佳答案

您似乎已经自己解决了正则表达式部分。我对结果提取有一个建议:使用 kantan.regex .

这允许你写:

import kantan.regex.implicits._

// Declare your regular expression, validated at compile time.
val regex = rx"(.+@[A-Za-z0-9.]+)(?:[:;,|]+)(.*)"

// Sample input
val input = "abc@xyz.com,blah"

// Returns an Iterator[(String, String)] on all matches, where
// ._1 is the email and ._2 the string
input.evalRegex[(String, String)](regex)

请注意,您可能希望为此使用更好的类型值 - 例如,案例类而不是 (String, String)。这也是可能的 - 您可以自己提供解码器,或者让 shapeless 派生它们:

import kantan.regex.generic._

// Case class in which to store results.
case class MailMatch(mail: String, value: String)

// Returns an Iterator[MailMatch]
input.evalRegex[MailMatch](regex)

完全披露:我是作者。

关于Java/Scala 提取电子邮件和格式为 email[delimiter]string 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42104681/

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