RegEx для игнорирования скобок в строке - PullRequest
2 голосов
/ 29 апреля 2019

Вот такая строка:

strs = "Tierd-Branden This is (L.A.) 105  / New (Even L.A.A)"

После попытки следующего кода я не получаю ожидаемый результат.

и это мой код:

import re, itertools
strs = "Tierd-Branden This is (U.C.) 105  / New (Even L.A.A)"
print re.findall(r"[\w']+[\w\.]", strs)

Я ожидаю, что это:

['Tierd', 'Branden', 'This', 'is', 'L.A.', '105', 'New', 'Even', 'L.A.A']

Но я понял:

['Tierd', 'Branden', 'This', 'is', 'L.', 'A.', '105', 'New', 'Even', 'L.', 'A.']

У меня вопрос, как сохранить содержимое круглых скобок с . , связанными как элемент списка?

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Шаблон [\w']+[\w\.] соответствует 1 или более слову или ' символам, а затем слову или . символу. Следовательно, он не может соответствовать фрагментам слова или ' символам, которые имеют более 1 точки в них.

Я предлагаю использовать

r"\w[\w'.]*"

См. Демонстрационный пример regex и график Regulex :

enter image description here

Детали

  • \w - слово char
  • [\w'.]* - 0 или более слов, ' и . символов.
0 голосов
/ 29 апреля 2019

Этот RegEx может вернуть желаемый результат, который просто вы можете перечислить все нужные символы в [] . Вы можете использовать группу захвата, если хотите, просто позвонить ей, используя $ 1 . Вы можете добавить любые другие символы, которые вы можете пожелать / иметь в [] , и если эти символы могут быть мета-символами, вы можете использовать \ для экранирования.

([A-Za-z0-9\.]+)

enter image description here

Вы можете удалить группу захвата, и она все еще может работать:

[A-Za-z0-9\.]+
...