首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写与java兼容的Regex

编写与java兼容的Regex
EN

Stack Overflow用户
提问于 2020-03-25 02:25:04
回答 2查看 43关注 0票数 0

我无法解决一个场景:下面是示例数据:

5 AP 7122784

6 APB +5115400852

7 APE ABC.XYZ@LOM.COM

8 APE LAX*ABC.XYZ@LOM.COM

9 APE ERT-EDF@UK.TR.EDS

APE是一个标识符,它告诉我们它是一个电子邮件id字段。

我们必须根据以下规则选择电子邮件标识:

  1. 如果LAX*存在,那么在LAX*之后获取值并获取它。即ABC.XYZ@LOM.COM
  2. 如果数据中没有包含LAX*的电子邮件id (8 LAX*ABC.XYZ@LOM.COM -record不存在),那么选择所有的电子邮件id,即ABC.XYZ@LOM.COM和EDF@UK.TR.EDS。

有人能帮我一下吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-03-25 03:18:25

我想创建一个Java代码,如下所示:

进口java.util.regex.Matcher;

进口java.util.regex.Pattern;

要扫描的字符串以找到模式。

代码语言:javascript
复制
 String regex = "(APE\\sPAX\\*|APE\\s)(?<email>.*)\\s*";

 String string = "5 AP 7122784\n"

 + "6 APB +5115400852\n"

 + "7 APE ABC.XYZ@LOM.COM\n"

 + "8 APE PAX*ABC.XYZ@LOM.COM\n"

 + "9 APE ERT-EDF@UK.TR.EDS";

 Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);

 Matcher matcher = pattern.matcher(string);

while (matcher.find()) {

System.out.println("Full match: " + matcher.group(0));

for (int i = 1; i <= matcher.groupCount(); i++) {

 System.out.println("Group " + i + ": " + matcher.group(i));

}

}

}

}`

并在Java中捕获使用if else的组。

在这里输入图像描述

上述Java代码的快照:

票数 0
EN

Stack Overflow用户

发布于 2020-03-25 04:05:01

使用这个正则表达式:

代码语言:javascript
复制
^\d+ +APE +LAX\*(.*)

使用多行标志(regex开头处的/m(?m) )来确定是否有一行以一个或多个数字开头,后面跟着多个或多个空格,APE后面跟着一个或多个空格,后面跟着LAX*。如果有匹配捕获组1将包含行的其余部分,这将被假定为一个电子邮件地址。这就是

代码语言:javascript
复制
ABC.XYZ@LOM.COM

演示

如果没有匹配,请使用以下带有多行标志的regex:

代码语言:javascript
复制
^\d+ +APE +(.*)

每个匹配的捕获组1的内容是感兴趣的电子邮件地址之一。这里(删除行8 APE LAX*ABC.XYZ@LOM.COM之后)将有两个匹配项,其中捕获组包含ABC.XYZ@LOM.COMERT-EDF@UK.TR.EDS

演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60842197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档