Регулярное выражение в python: объединение двух регулярных выражений в одно - PullRequest
1 голос
/ 12 февраля 2020

Предположим, у меня есть следующий список:

a = ['35','years','opened','7,000','churches','rev.','mr.','brandt','said','adding','denomination','national','goal','one','church','every','10,000','persons']

Я хочу удалить все элементы, которые содержат числа и элементы, заканчивающиеся точками. Поэтому я хочу удалить '35','7,000','10,000','mr.','rev.'

Я могу сделать это отдельно, используя следующее регулярное выражение:

regex = re.compile('[a-zA-Z\.]')
regex2 = re.compile('[0-9]')

Но когда я пытаюсь объединить их, я удаляю либо все элементы, либо ничего. Как правильно объединить два регулярных выражения?

Ответы [ 4 ]

2 голосов
/ 12 февраля 2020

Это должно работать:

reg = re.compile('[a-zA-Z]+\.|[0-9,]+')

Обратите внимание, что ваше первое регулярное выражение неверно, поскольку оно удаляет любую строку внутри точки внутри него. Чтобы избежать этого, я включил [a-zA-Z]+\. в объединенное регулярное выражение. Ваше второе регулярное выражение также неверно, так как оно пропускает "+" и ",", которые я включил в приведенное выше решение. Здесь demo .

Кроме того, если вы предполагаете, что элементы, заканчивающиеся точкой, могут содержать несколько чисел, полное решение должно быть:

reg = re.compile('[a-zA-Z0-9]+\.|[0-9,]+')

1 голос
/ 12 февраля 2020

Если вам не нужно захватывать результат, это соответствует любой строке с точкой в ​​конце или любой строке с номером в ней.

\.$|\d
1 голос
/ 12 февраля 2020

Вы можете использовать:

(?:[^\d\n]*\d)|.*\.$

См. демо на regex101.com .

0 голосов
/ 12 февраля 2020

Вот способ выполнить работу:

import re

a = ['35','years','opened','7,000','churches','rev.','mr.','brandt','said','adding','denomination','national','goal','one','church','every','10,000','per.sons']
b = []
for s in a:
    if not re.search(r'^(?:[\d,]+|.*\.)$', s):
        b.append(s)
print b

Вывод:

['years', 'opened', 'churches', 'brandt', 'said', 'adding', 'denomination', 'national', 'goal', 'one', 'church', 'every', 'per.sons']

Демонстрация и объяснение

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