Я пытаюсь изменить выражение регулярного выражения, которое я работаю (я использую Python 3.6), чтобы работать с моими тестовыми данными.Вы можете видеть, например,
str = "<<em> @@@@ 2 июля 2018 Idustry. Lorem Ipsum был стандартным фиктивным текстом в отрасли с 1500-х годов, когда неизвестный принтер взялкамбузом шрифта и разработал его, чтобы сделать книгу типового образца. Он пережил не только пять веков, но и скачок в электронное @@@@@@ c верстку, оставаясь практически неизменным. Он был популяризирован в 1960-х годах с выпускомлистов Letraset, содержащих отрывки из Lorem Ipsum, а в последнее время и с настольным издательским программным обеспечением, таким как Aldus PageMaker, включая версии Lorem Ipsum> <<em> @@@@ 1 августа 2019 Dustry. Lorem Ipsum был стандартным фиктивным текстом в историис 1500-х годов, когда неизвестный принтер взял камбуз шрифта и взломал его, чтобы сделать книгу типового образца. Он пережил не только пять веков, но и скачок в электронный набор текста, оставаясь практически неизменным. Он был популяризирован в 1960-х годах.с выпуском Letraset она $$$$$$$ et etСодержит отрывки из Lorem Ipsum и еще больше ##### только с настольным издательским программным обеспечением, таким как Aldus PageMaker, включая версии Lorem Ipsum <<em> 2 августа 2019 , в основном с настольным издательским ПО, таким как Aldus PageMaker, включая версии Lorem Ipsum> <<em> @@@@ 1 августа 2019 года Др.Лорем Ипсум был стандартным манекенщиком в отрасли с 1500-х годов, когда неизвестный принтер взял галеру типа и скремблировал ######## его, чтобы сделать книгу типовых образцов.Он пережил не только пять веков, но и скачок в электронном наборе текста, оставаясь практически неизменным.Он был популяризирован в 1960-х годах с выпуском листов Letraset, содержащих отрывки Lorem Ipsum, и совсем недавно - с программным обеспечением для настольных издательских систем, таким как Aldus PageMaker, включая версии Lorem Ipsum> "
. Вы можете видеть, что есть несколько фрагментов, разделенныхпо угловым скобкам, где каждый интересующий меня фрагмент начинается с легко идентифицируемой строки, в данном случае @@@ некоторые даты и фрагменты заканчиваются угловыми скобками, поэтому это похоже на <@@@@ некоторую дату - некоторый текст, который может содержать угловые скобки> следующим образом
<<em> @@@@ 2 июля 2018 Idustry. Lorem Ipsum был стандартным фиктивным текстом в отрасли с 1500-х годов, когда неизвестный принтер взял камбуз шрифта и зашифровалэто книга для образцов шрифтов. Она пережила не только пять веков, но и скачок в электронном наборе текста, оставаясь практически неизменной. Она была популяризирована в 1960-х годах с выпуском листов Letraset, содержащих отрывки Lorem Ipsum, и более поздними.y с настольным издательским программным обеспечением, таким как Aldus PageMaker, включая версии Lorem Ipsum>
Иногда проблема заключается в том, что текст, следующий за датой, содержит угловую скобку, и так как регулярное выражение стремится, оно будет совпадать только частично.Есть ли способ предотвратить это?Я не смог успешно использовать отрицательный взгляд вперед.
Я уже пробовал следующее:
r"<[(?!<@date) >| (?!<@date) < | ^>]+>
Другими словами, сопоставьте все, что не следует <@date, включаяугловые скобки <или>, если они встречаются в тексте, также соответствуют любому другому символу.
pattern = re.compile(r"<[^>]+>")
return pattern.findall(str)
Фактический результат - совпадение только частично, поскольку регулярное выражение стремится соответствовать только первому> или <в тексте.тогда как я хотел бы получить весь фрагмент, включая часть после> и вплоть до фактической закрывающей угловой скобки и начала следующего фрагмента (если только он не является последним фрагментом, тогда не может быть ничего, что следует).