Регулярное выражение для (+918047093311) или (+918061914444 PIN 6251) - PullRequest
1 голос
/ 12 июля 2020

Я пытаюсь написать регулярное выражение для извлечения + 91XXXXXXXXXX или 0XXXXXXXXX из строки (+918047093311) или (+918061914444 PIN 6251) или (08061914444 PIN 6251).

Я хочу прочитать внутри скобку и выберите номер с +91 или 0, за которым следует 10 di git, начиная только с 9, 8, 7 и 6.

До сих пор я мог сделать это -> ^([0]|\+91)?[6789]\d{9}$

Это может определить номер, начинающийся с +91 или 0, затем 10 di git номер, начинающийся с 6,7,8 или 9.

Пожалуйста, помогите

Ответы [ 2 ]

3 голосов
/ 12 июля 2020

Используйте

(?:\b0|\+91)?[6-9]\d{9}\b

См. proof . Выражению соответствует ноль или +91 в качестве необязательного значения, затем набор di git из 6789, затем девять цифр.

Java:

String s = "(+918047093311) or (+918061914444 PIN 6251) or (08061914444 PIN 6251)";
Pattern pattern = Pattern.compile("(?:\b0|\\+91)?[6-9]\\d{9}\\b");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
    System.out.println(matcher.group()); 
}

Вывод:

+918047093311
+918061914444
8061914444
1 голос
/ 12 июля 2020

для вашего определения, это должно работать

$ echo "I am trying to write a regex for extracting a +91XXXXXXXXXX or 0XXXXXXXXX from the string (+918047093311) or (+918061914444 PIN 6251) or (08061914444 PIN 6251)." | 
  grep -oE '(?<=\()?(0|\+91)?[6-9][0-9]{9}(?=( |\)))?'

дает

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