#regex #match
Вопрос:
Пожалуйста, как я могу получить адрес с помощью регулярного выражения:
Адрес 123 Улица Мэра, филиал ЛАГ ABC
используется (?<=Address(s))(.*(?=s))
, но включает пробелы после «Адреса». Пытаюсь получить выражение, которое извлекает адрес без пробелов. (После «Адреса» перед «123»есть несколько пробелов)
Спасибо!
Комментарии:
1. Значение без пробела находится в группе 2
2. Ваше регулярное выражение уже выглядит правильным…?
3. Каковы требования к шаблону? Откуда ты знаешь, что нам нужно остановиться раньше
Branch ABC
и не толькоABC
? Вы указали только левую границу,Address
пробелы после нее. Кроме того, какой язык программирования/инструмент вы используете? Пожалуйста, поделитесь своей соответствующей частью кода, показывающей, как вы используете регулярное выражение.4. @Thefourthbird в результате, который я получаю, есть пробелы перед 123
5. @Thefourthbird, я верю, что вы можете ответить на этот вопрос.
Ответ №1:
Шаблон (?<=Address(s))(.*(?=s))
, который вы попробовали, утверждает адрес, за которым следует один символ пробела слева, а затем соответствует остальной части строки, утверждающей символ пробела справа.
Для примера данных, которые будут совпадать непосредственно перед последним символом пробела в строке, и совпадение также будет содержать все символы пробела, которые присутствуют сразу после Address
Один из вариантов сопоставления выделенных жирным шрифтом частей в вопросе заключается в использовании группы захвата.
bAddresss ([^,] ,s*S )
Шаблон совпадает:
bAddresss
Адрес соответствия, за которым следуют символы пробелов 1(
Группа захвата 1[^,] ,
Сопоставьте 1 вхождений любого символа, за исключением,
, а затем сопоставьте,
s*S
Сопоставьте необязательные символы пробелов, за которыми следуют символы без пробелов 1)
Близкая группа 1
Демонстрация регулярных выражений .NET (нажмите на вкладку Таблица, чтобы увидеть значение для группы 1)
Обратите внимание, что s
и [^,]
также может соответствовать новой строке
Вариант с положительным внешним видом, чтобы получить только совпадение:
(?<=bAddresss )[^,s][^,] ,s*S
<a rel=»noreferrer noopener nofollow» href=»https:///regexstorm.net/tester?p=(?Демонстрация регулярных выражений .NET