Можно ли разделить текстовые документы такого рода на несколько с помощью RegEx? - PullRequest
0 голосов
/ 28 января 2019

Я хочу разбить один большой текстовый документ (.txt) на несколько.Это было задано ранее, но я думаю, что в моем случае мне нужен определенный RegEx для выполнения этой задачи.

Я пробовал несколько «разделенных» программ, но пока не нашел удовлетворительного решения.Текстовый документ - это спор в испанском парламенте.Текст разделен на политические инициативы (я не уверен, что это идиоматично), и я хочу разделить его на документ по инициативе.

Самое смешное, что каждая инициатива имеет собственное название в следующей.форма:

- DEL GRUPO PARLAMENTARIO CATALÁN (CONVERGÈNCIA I UNIÓ), REGULADORA DE LOS HORARIOS COMERCIALES. (Número de expediente 122/000004.)

- DEL DIPUTADO DON MARIANO RAJOY BREY, DEL GRUPO PARLAMENTARIO POPULAR EN EL CONGRESO, QUE FORMULA AL SEÑOR PRESIDENTE DEL GOBIERNO: ¿CÓMO VALORA USTED LOS PRIMEROS DÍAS DE SU GOBIERNO? (Número de expediente 180/000021.)

Как видите, каждый заголовок в верхнем регистре, начинается с минуса и заканчивается XXX/XXXXXX.) (где X - цифра), точкой и закрывающей скобкой.Каждый заголовок отличается друг от друга.Я хотя и делаю некоторые регулярные выражения для захвата этих характеристик, чтобы между этими дебатами был элемент-разделитель, но я, честно говоря, не могу понять, как это сделать.

Идеальным было бы выбрать заголовок иобсуждайте под ним до тех пор, пока не появится другой заголовок, и сделайте новый документ с этим, так что, в конце концов, я могу иметь в одном документе политическую инициативу с ее заголовком и собственным обсуждением.

Итак, можно ли это сделать с помощьюрешение RegEx?Какое программное обеспечение мне нужно для этого?Достаточно ли Notepad ++?

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Вот простая попытка Awk.

awk '/^- DEL .+ \(Número de expediente [1-9][0-9]*\/[0-9]+\.\)$/ {
        if (p) close (p)
        p = sprintf("split%05i.txt", ++i) }
    { print > p }' inputfile.txt

Ваше определение «все заглавные буквы» не выглядело полностью определенным, поэтому я немного обманул;Вы можете изменить мои предположения.Ваш Awk может не распознавать É и т. Д. Как верхний регистр, возможно, также в зависимости от вашей локали.

0 голосов
/ 28 января 2019

Я предлагаю этому RegEx соответствовать заголовку:

^\-.+\d{3}\/\d{6}\.\)$

Я предполагал, что заголовок всегда заканчивается XXX/XXXXXX.), где X - это цифра.

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

В большинстве текстовых редакторов есть опция "RegEx" с инструментом поиска, ноэто может быть недостаточно в некоторых случаях использования.Также практически любой язык программирования может использовать RegEx.

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