编写与java兼容的Regex



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

5 AP 7122784

6 APB+5115400852

7猿ABC.XYZ@LOM.COM

8猿松懈*ABC.XYZ@LOM.COM

9猿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.

有人能帮我吗?

感谢

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

导入java.util.regex.Matcher;

导入java.util.regex.Pattern;

要扫描以查找图案的字符串。

String regex = "(APE\sPAX\*|APE\s)(?<email>.*)\s*";
String string = "5 AP 7122784n"
+ "6 APB +5115400852n"
+ "7 APE ABC.XYZ@LOM.COMn"
+ "8 APE PAX*ABC.XYZ@LOM.COMn"
+ "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代码的Scrreenshot:

使用以下正则表达式:

^d+ +APE +LAX*(.*)

使用多行标志(正则表达式开头的/m(?m)(来确定是否存在以一个或多个数字开头、后跟多个空格、后跟APE、后跟一个或更多空格、后跟LAX*的行。如果存在匹配,则捕获组1将包含该行的其余部分,该行被假定为电子邮件地址。这是

ABC.XYZ@LOM.COM

演示

如果没有匹配项,请使用以下带有多行标志的正则表达式:

^d+ +APE +(.*)

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

演示

最新更新