Regex - получить только строку после чисел и перед скобками (напр. 1. Манхэттен (Нью-Йорк)) - PullRequest
0 голосов
/ 03 апреля 2020

Новое в регулярных выражениях, у меня пока что есть '([A-Za-z]^[^\(]+)', но я получаю ошибку "индекс списка вне диапазона".

Я хочу получить только "Манхэттен" из "1. Манхэттен ( Нью-Йорк) "

Ответы [ 3 ]

1 голос
/ 03 апреля 2020

Вы можете использовать что-то вроде этого:

import re

txt = "(ex. 1. Manhattan (NY))"
m = re.search(r'[0-9]+\.\s+([^(]+)', txt)
if m:
    print(m.group(1))

Это вывело бы:

Manhattan
0 голосов
/ 04 апреля 2020

Если ваши данные имеют регулярную структуру, такую ​​как что-то, пробелы, необходимые данные, пробелы и что-то еще, тогда проще использовать метод split:

txt = '1. Manhattan (NY)'
chunks = txt.split(maxsplit=3)
if len(chunks) > 1:
    print(chunks[1])

Демо .

В Python 2 вызов метода split преобразуется в: chunks = txt.split(None, 3).

Демо .

0 голосов
/ 03 апреля 2020

Каретка (^) имеет две основные цели. Один, ^ используется для обозначения начала строки и, как таковой, обычно находится в начале вашего регулярного выражения. Второй находится в квадратных скобках ([]). Если знак вставки является первым символом в квадратных скобках, он действует как «не» (соответствует всему, кроме символов, перечисленных в квадратных скобках).

Я думаю, что ошибка может исходить из знака вставки (^) что у вас есть в «середине» вашего регулярного выражения; первая каретка в вашем выражении.

Это все равно не даст правильного ответа, но оно должно решить эту проблему.

'([A-Za-z] +) \ s (' - Должен ли найти и перехватить все непрерывные буквенные символы, за которыми следуют 0-n пробельные символы, за которыми следует левая скобка. Вам нужно решить, хотите ли вы включить пробелы в захваченное значение. И все ли значения сопровождаются левой скобкой?

Вы можете использовать https://pythex.org/ (или аналогичные инструменты) для проверки вашего регулярного выражения.

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