Регулярное выражение для нескольких разных слов между пробелами

Я совершенно новичок в регулярном выражении. Я просто хочу знать, возможно ли это. (Извините, если объяснение запутанно или слишком сложно). Скажем, я просто хочу найти и заменить этот конкретный заголовок жирным шрифтом:

«Как обсуждалось в главе 1, пользователей финансовой отчетности можно отнести к категории поставщиков ресурсов. (пробел)(пробел)Пользователи и принятие решений(пробел)(пробел) Пример для этого. (пробел)(пробел)Характер и цель финансового анализа(пробел)(пробел) Мы установили, что финансовый анализ предполагает выражение цифр в финансовых отчетах в относительных величинах».

к этому :

«Как обсуждалось в главе 1, пользователей финансовой отчетности можно отнести к категории поставщиков ресурсов.
(новая строка) Пользователи и принятие решений (вкладка) Пример для этого.
< strong>(новая строка) Характер и цель финансового анализа (табуляция) Мы определили, что финансовый анализ предполагает выражение цифр, представленных в финансовой отчетности, в относительном выражении».

Поскольку мои знания о регулярных выражениях в настоящее время ограничены, я пытаюсь разбить их на 2 части:


1. чтобы найти ". (space)(space)Nature" :
[(.)]\s\s[(A-Z)]\w+
to \n$&


2. чтобы найти "анализ(пробел)(пробел) Мы" :
[(az)]\w+\s\s[(AZ)]
в ??

Итак, мой вопрос в том, можно ли просто определить 1 регулярное выражение для
. (пробел)(пробел)Пользователи и принятие решений(пробел)(пробел)
. (пробел)(пробел)Характер и цель финансового анализа(пробел)(пробел) Мы

и заменяем его приведенным выше примером?

Спасибо!

PS. Причина этого странного редактирования заключается в том, чтобы загрузить это в программное обеспечение для флэш-карт anki в виде txt без дальнейшего редактирования.
Мой нынешний метод может быть довольно трудоемким, если бы я редактировал весь текст из толстого учебника (который может содержать более 1000 правок на главу x20 или около того глав x5 учебников и более).
к вашему сведению, в anki и некоторых других программах для карточек табуляция является разделителем полей между передней частью/вопросом и задней частью/ответом.
Двойной пробел[ ][ ] используется для отделения определенного заголовка от одинарного пробела при использовании поиска и замены; который был предварительно установлен мной заранее.
Новая строка (\n) предназначена для добавления новых отдельных карточек.
Anki (и несколько других программ для карточек) поддерживает html, поэтому я обычно добавлял несколько карточек, копируя текст из pdf с помощью notepad++ и регулярных выражений, находил и заменял несколько заголовков или первых слов предложения в соответствии с вопросом/передней частью anki. карточка, а остальное становится ответной частью; а затем импортировать его в anki. Если бы можно было автоматизировать всю часть поиска, я бы сэкономил чертовски много времени!


person pagkly    schedule 30.04.2016    source источник
comment
Какой язык или инструмент вы используете? Я думаю, что ваш правильный ответ будет зависеть от этого.   -  person Tim Biegeleisen    schedule 30.04.2016
comment
Что-то вроде этого: [ ]{2} ? regex101.com/r/nR0xC8/1 Если я правильно понимаю вашу проблему, два последовательных пробела должны заменить новой строкой.   -  person Jan    schedule 30.04.2016
comment
Спасибо за быстрый ответ. Все еще экспериментирую с regexr, notepad++, vim (я не знаю, как это использовать), jsfiddle, но я открыт для любого другого редактора.   -  person pagkly    schedule 30.04.2016
comment
Думаю, вам нужно это.   -  person Wiktor Stribiżew    schedule 30.04.2016
comment
@Jan попытался упростить все до решения, которое вы предлагали ранее, но это недостаточно быстро.   -  person pagkly    schedule 30.04.2016
comment
@Wiktor Stribiżew спасибо за предложение! но если я это сделаю, весь заголовок исчезнет   -  person pagkly    schedule 30.04.2016


Ответы (2)


Погуглив и покопавшись какое-то время, я думаю, что наконец нашел ответ! :D
[ ]{2,}([AZ])[\w ]{1,}[ ]{2,}
заменить на
\n $&\т\т

http://regexr.com/3db4o

Черпая вдохновение из:
Регулярное выражение для нескольких слов, разделенных пробелами
Регулярное выражение Python: включение пробелов внутри диапазона символов
http://www.rexegg.com/regex-quickstart.html и @Jan's отвечать

person pagkly    schedule 30.04.2016

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

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

/[^\S\r\n]{2,}[A-Z]\w*(?:[^\S\r\n]\w+)*[^\S\r\n]{2,}/g

См. демонстрацию регулярного выражения (заменить на \n$&\t\t)

Обратите внимание, что [\w ]{1,} будет соответствовать символу слова или пробелу 1+ раз и может допускать более 1 пробела между словами. Однако это может быть полезно, если вам нужно сопоставить последний фрагмент с двумя пробелами в строке. Обратите внимание, что вам нужно будет добавить + после второго [^\S\r\n] в приведенном выше шаблоне.

person Wiktor Stribiżew    schedule 05.05.2016