поиск по регулярному выражению удалить слово - PullRequest
1 голос
/ 25 сентября 2019

Я хочу удалить первые 4 слова из абзаца

Оригинал: Mywebsite 21 12 34 have 10000 traffic

Что я хочу получить результат: have 10000 traffic

У меня есть1000 строк совпадают с исходным абзацем (Mywebsite 21 12 34 have 10000 traffic)

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

Ниже код удаляет первое слово из предложения:

^\w+\s+(.*)  = replace with $1

Следующий код удалит все числа из строки:

[0-9 ]+  = replace with space

Я хочу объединить приведенный выше код и заставить один код поиска регулярного выражения работать, как я объяснил выше, но не влиять на любые другие слова в той же строке.

Ответы [ 3 ]

0 голосов
/ 25 сентября 2019

Если все ваши строки в одном и том же формате, т. Е. Если вам всегда нужно удалить первые 4 слова, вы можете сделать что-то вроде этого, что гораздо проще понять, чем RegEx:

# Iterate through all your lines
for line in lines:

    # Split the line string on spaces to create an array of words.
    words = line.split(' ')

    # Exclude the 4 first words and re-join the string with the remaining words.
    line = ' '.join(words[4:])
0 голосов
/ 25 сентября 2019

Шаблон, который вы пробовали ^\w+\s+(.*), соответствует 1+ символам слова, 1+ символам пробела, а затем любому символу, кроме новой строки, до конца строки, чтобы соответствовать всей строке.

Для удаленияпервое слово и следующие 3 раза по 2 цифры, которые вы можете использовать:

^\s*\w+(?: \d{2}){3}\s*
  • ^ Начало строки
  • \s* Соответствие 0+ пробелам
  • \w+ Соответствие 1+ словам символов
  • (?: \d{2}){3} Повторить 3 раза, сопоставляя пробел и 2 цифры
  • \s* Соответствие 0+ пробелам

Regex demo | Python demo

Обратите внимание, что \s также соответствует символу новой строки.Если вы хотите сопоставлять только пробелы или символы табуляции, вы можете использовать [ \t].

0 голосов
/ 25 сентября 2019

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

re.sub(r'^(\w+\s)[\d\s]+', r'\1', text)

См. Демо regex a Шаблон будет соответствовать

  • ^ - начало строки
  • (\w+\s) - Группа захвата 1: один или несколько символов слова и пробел
  • [\d\s]+ - 1+ пробелы или цифры.

Демонстрация Python :

import re
rx = re.compile(r"^(\w+\s)[\d\s]+")
s = "Mywebsite 21 12 34 have 10000 traffic"
print( rx.sub(r"\1", s) ) # => Mywebsite have 10000 traffic
...