Мне нужна помощь в объявлении регулярного выражения. Мои данные похожи на следующие:
this is a paragraph with<[1> in between</[1> and then there are cases ... where the<[99> number ranges from 1-100</[99>.
and there are many other lines in the txt files
with<[3> such tags </[3>
Требуемый результат:
this is a paragraph with in between and then there are cases ... where the number ranges from 1-100.
and there are many other lines in the txt files
with such tags
Я пробовал это:
#!/usr/bin/python
import os, sys, re, glob
for infile in glob.glob(os.path.join(os.getcwd(), '*.txt')):
for line in reader:
line2 = line.replace('<[1> ', '')
line = line2.replace('</[1> ', '')
line2 = line.replace('<[1>', '')
line = line2.replace('</[1>', '')
print line
Я также попробовал это (но похоже, что я использую неправильный синтаксис регулярных выражений):
line2 = line.replace('<[*> ', '')
line = line2.replace('</[*> ', '')
line2 = line.replace('<[*>', '')
line = line2.replace('</[*>', '')
Я не хочу жестко кодировать replace
от 1 до 99. , ,
where the<[99> number ranges from 1-100</[100>
?<...>
теге, поэтому вывод должен бытьwhere the number rangers from 1-100 ?
Ответы:
Этот проверенный фрагмент должен сделать это:
Изменить: Вот прокомментированная версия, объясняющая, как это работает:
Регексы это весело! Но я бы настоятельно рекомендовал потратить час или два на изучение основ. Для начала вам нужно узнать, какие символы являются особыми: «метасимволы», которые необходимо экранировать (т. Е. С обратной косой чертой, расположенной спереди - и правила различаются внутри и снаружи классов персонажей.) Отличное онлайн-руководство можно найти по адресу: www .regular-expressions.info . Время, проведенное там, окупится много раз. Счастливое регулярное выражение!
источник
str.replace()
делает фиксированные замены. Используйтеre.sub()
вместо этого.источник
Я бы пошел так (регулярное выражение объясняется в комментариях):
Если вы хотите больше узнать о регулярных выражениях, я рекомендую прочитать « Поваренную книгу регулярных выражений» Яна Гойваэрта и Стивена Левитана.
источник
*
вместо{0,}
{0,}
то же самое*
,{1,}
эквивалентно+
, и{0,1}
то же самое, что и?
. Лучше использовать*
,+
или?
когда вы можете, просто потому, что они короче и легче для чтения.Самый простой способ
источник
<[^>]+>
? Кстати: я думаю, что ваше регулярное выражение будет слишком много (например, что-то вроде<html>
)Метод replace для строковых объектов не принимает регулярные выражения, а только фиксированные строки (см. документацию: http://docs.python.org/2/library/stdtypes.html#str.replace ).
Вы должны использовать
re
модуль:источник
\d+
вместо[0-9]+
не нужно использовать регулярное выражение (для вашего образца строки)
источник
источник