5

Я надеюсь, что я просто упускаю очевидное здесь, но как в мире я сопоставляю ноль или больше пробелов с движком Microsoft Word 2010 "Regex"?

В качестве глупого примера я хочу сопоставить все следующее в группе захвата:

cowseat grass
cows eat grass
cows  eat grass
cows   eat grass
cows    eat grass

Я бы обычно делал (cows\s*eat grass) и покончил бы с этим. Но я не вижу, как сопоставить ноль или более пробелов. Я хочу захватить всю фразу в группе захвата, но у меня есть переменное количество пробелов.

Я использовал этот документ в качестве ссылки.

1 ответ1

8

Документ, на который вы ссылаетесь, показывает, что "регулярные выражения" Microsoft вовсе не являются регулярными выражениями; это причудливый гибрид (скорее, ублюдок) глобализации в стиле оболочки (http://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm) и настоящие регулярные выражения.

Так как синтаксис glob использует символ * в качестве синонима для регулярного выражения .* , И Microsoft решила (как упомянуто в комментарии) сделать @ эквивалентным квантификатору регулярного выражения + вместо * (что глупо, поскольку a+ эквивалентно aa* для любого атома a , что делает + ненужным), похоже, вам не повезло.

Мое личное мнение таково: (1) это глупо, и (2) называть эти шаблоны "регулярными выражениями" в лучшем случае вводит в заблуждение, но, к сожалению, я не вижу другого пути, кроме как отказаться от Word в пользу инструмента, который правильно поддерживает регулярное выражение. (Хотя я полагаю, что теоретически вы можете попытаться проанализировать формат xml-ish самого файла docx, извлечь текст и затем применить свое регулярное выражение ....)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .