#regex #search
#регулярное выражение #Поиск
Вопрос:
Я хочу извлечь идентификатор из поискового запроса, но я не знаю длину идентификатора.
Из этого ввода я хочу получить числа, которых нет в словах, и числа, которые не разделены символами.
12 11231390 good123e41 12he12o1 1391389 dajue1290a 12331 12-10 1.2 test12.0why 12 12 12*6 2d1139013 09`29 83919 1
Сюда я хочу вернуться
12 11231390 1391389 12331 83919 1
До сих пор я пытался /b[^D]d*[^D]b/gm
, но я получаю цифры между символами и не получаю 1 в конце.
Ответ №1:
Вы можете многократно сопоставлять цифры между пробелами. Использование границы слова b
даст вам частичные совпадения.
Обратите внимание, что [^D]
это то же самое, что d
и ожидаемый хотя бы один символ.
Ваш шаблон может быть записан как bdd*db
, и вы можете видеть, что вы не получаете 1 в конце, поскольку ваш шаблон соответствует как минимум 2 цифрам.
(?<!S)d (?:s d )*(?!S)
Шаблон соответствует:
(?<!S)
Отрицание поиска назад, утверждение границы пробела слеваd (?:s d )*
Сопоставьте 1 цифры и, при необходимости, повторите сопоставление символов 1 пробелов и 1 цифр.(?!S)
Отрицательный прогноз, установите границу пробела справа
Демонстрация регулярных выражений
Если поисковые запросы не поддерживаются, вы можете использовать сопоставление с группой захвата
(?:^|s)(d (?:s d )*)(?:$|s)