我无法解决一个场景:下面是示例数据:
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字段。
我们必须根据以下规则选择电子邮件标识:
有人能帮我一下吗?
谢谢
发布于 2020-03-25 03:18:25
我想创建一个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代码的快照:
发布于 2020-03-25 04:05:01
使用这个正则表达式:
^\d+ +APE +LAX\*(.*)使用多行标志(regex开头处的/m或(?m) )来确定是否有一行以一个或多个数字开头,后面跟着多个或多个空格,APE后面跟着一个或多个空格,后面跟着LAX*。如果有匹配捕获组1将包含行的其余部分,这将被假定为一个电子邮件地址。这就是
ABC.XYZ@LOM.COM如果没有匹配,请使用以下带有多行标志的regex:
^\d+ +APE +(.*)每个匹配的捕获组1的内容是感兴趣的电子邮件地址之一。这里(删除行8 APE LAX*ABC.XYZ@LOM.COM之后)将有两个匹配项,其中捕获组包含ABC.XYZ@LOM.COM和ERT-EDF@UK.TR.EDS。
https://stackoverflow.com/questions/60842197
复制相似问题