Regex для извлечения stati c текста и числа с использованием только регулярного выражения - PullRequest
0 голосов
/ 27 января 2020

Я совершенно новичок в этом регулярном выражении. Но я попытался написать регулярное выражение, чтобы получить какой-либо текст c и номер телефона для приведенного ниже текста

"пароль": "пароль123: город адрес: почтовый адрес: 9233321110: пол: 45"

Я написал, как показано ниже, чтобы извлечь это: "password":9233321110

(([\"]password[\"][\s]*:{1}[\s]*))(\d{10})?

регулярное выражение для демонстрации: https://regex101.com/r/2vNpMU/2

правильный regexp дает полное совпадение как "password":9233321110 в regex tool

Я не использую здесь какой-либо язык программирования, это для захвата сетевых пакетов на уровне F5.

Пожалуйста, помогите мне с регулярным выражением;

1 Ответ

0 голосов
/ 27 января 2020

Я бы использовал /^([^:]+)(?::[^:]+){3}:([^:]+)/ для этого.

Объяснил (более подробное объяснение в regex101 ):

  • ^ совпадений с начала строка
  • (…) является первой группой захвата. При этом будет получено, что начальная "password"
    • [^:]+ соответствует одному или нескольким символам, отличным от двоеточия
  • (?:…) является группой без захвата (она ничего не собирает для дальнейшего использования)
    • :[^:]+ соответствует двоеточию, а затем 1+ не двоеточия
  • {3} указывает нам сопоставить предыдущий элемент (группа без захвата) ) 3 раза
  • : соответствует буквенному двоеточию
  • ([^:]+) фиксирует совпадение 1+ не-двоеточий, что даст нам 9233321110 в этом примере

Первая группа захвата обычно хранится как $1 или как первый элемент возвращаемого массива. (В Javascript нулевой элемент - полное совпадение, а индекс элемента 1 - первая группа захвата.) Вторая группа захвата - $2, et c.

Чтобы всегда соответствовать "password" key, hard-code it: /^("password")(?::[^:]+){3}:([^:]+)/

Вот живой фрагмент, демонстрирующий это:

x = `"password":"password123:cityaddress:mailaddress:9233321110:gender:45"`;
match = x.match(/^([^:]+)(?::[^:]+){3}:([^:]+)/);
if (match) console.log(match[1] + ":" + match[2]);
else console.log("no match");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...