首页 > 解决方案 > 编写与java兼容的正则表达式

问题描述

我无法解决一种情况:以下是示例数据:

5 美联社 7122784

6 APB +5115400852

7 猿 ABC.XYZ@LOM.COM

8 APE LAX*ABC.XYZ@LOM.COM

9 APE ERT-EDF@UK.TR.EDS

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

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

  1. 如果存在 LAX*,则在 LAX* 之后获取值并获取它。即 ABC.XYZ@LOM.COM
  2. 如果带有 LAX* 的电子邮件 ID 不在数据中(8 APE LAX*ABC.XYZ@LOM.COM - 记录不存在)然后选择所有电子邮件 ID,即 ABC.XYZ@LOM.COM 和 ERT-EDF@UK。 TR.EDS。

有人可以帮我吗?

谢谢

标签: regexregex-lookaroundsregex-negationregex-groupregex-greedy

解决方案


我在想创建一个如下的Java代码:

导入 java.util.regex.Matcher;

导入 java.util.regex.Pattern;

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

 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 代码的屏幕截图:


推荐阅读