#regex
Вопрос:
Я пытаюсь извлечь информацию о местоположении из Франции. Вот пример:
1#Tunisia#TS#TS#34#9#TS;4#Virsac, Aquitaine, France#FR#FR97#45.0333#-0.45#-1477568;4#Gironde, Aquitaine, France#FR#FR97#44.584#-0.089244#-1429418
По сути, это город, его регион и его страна. Следовательно, я сделал это:
^[2-5]#(.*?)#FR#
В результате получается:
Gironde, Aquitaine, France
Это правильно извлекает город/регион/страну, но извлекает только один из них. Можно ли извлечь несколько записей ? Ожидаемый результат будет:
Virsac, Aquitaine, France
Gironde, Aquitaine, France
Заранее спасибо,
Ответ №1:
Основываясь на вашем текущем шаблоне, вам необходимо заменить ^
привязку на конструкцию границы слова (чтобы убедиться 2
, 3
что , 4
, или 5
совпадают как отдельные числа) и заменить .*?
на [^#]*
, чтобы запретить совпадение крайнего правого вхождения шаблона завершающего разделителя.
То есть вы можете использовать
b[2-5]#([^#]*)#FR#
Смотрите демонстрацию регулярных выражений. Подробные сведения:
b
— граница слов[2-5]
— цифра от2
до5
#
— а#
чар([^#]*)
— Группа 1: ноль или более символов, отличных от#
#FR#
—#FR#
веревочка.