Написать Regex, совместимый с java - PullRequest
0 голосов
/ 25 марта 2020

Я не могу решить один сценарий: Ниже приведены примеры данных:

5 AP 7122784

6 APB + 5115400852

7 APE AB C. XYZ@LOM.COM

8 APE LAX * AB C. XYZ@LOM.COM

9 APE ERT-EDF@UK.TR.EDS

APE - это идентификатор, который сообщает нам, что это поле идентификатора электронной почты .

Мы должны выбрать идентификатор электронной почты на основе следующих правил:

  1. Если есть LAX *, тогда получить значение после LAX * и извлечь его. то есть AB C. XYZ@LOM.COM
  2. Если идентификатор электронной почты с LAX * отсутствует в данных (8 APE LAX * AB C. XYZ@LOM.COM - запись отсутствует), затем выберите все сообщения идентификаторы, например, AB C. XYZ@LOM.COM и ERT-EDF@UK.TR.EDS.

Может кто-нибудь помочь мне в этом?

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Используйте это регулярное выражение:

^\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.COM и ERT-EDF@UK.TR.EDS.

Demo

0 голосов
/ 25 марта 2020

Я думал создать код Java, как показано ниже:

import java .util.regex.Matcher;

import 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));

}

}

}

} `

и захватывать группы с помощью if еще внутри Java.

введите описание изображения здесь

Скриншот выше Java Код:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...