Другие ответы почти поняли это правильно. Выражение поиска правильное:
\b(c[a-z]*)\b
Я использовал *
вместо +
, чтобы сопоставить c
как одно слово, и добавил конечный \b
чтобы сделать ограничения слов более понятными, но исходная форма в порядке.
Строка замены должна быть:
$1 text
Это согласуется со ссылкой на документацию Джима К, но это довольно запутанно в этой области.
В частности, \1
можно использовать в поисковом выражении, чтобы повторить строку, ранее найденную в выражении, но $1
необходимо использовать в замещающей строке. Использование в строке поиска означает, что (a.b).*\1
будет сопоставлять a
и b
с символом между ними, а затем a
и b
с тем же символом между ними. Это не то же самое, что a.b.*a.b
, где промежуточные символы могут отличаться. Пример в ссылке на документацию верен, но ничего не объясняет, где он будет полезен.
И последнее замечание: моя версия 5.1.4.2 LibreOffice Writer отказывается делать подстановки, когда строка поиска начинается с \b
, хотя она находит все экземпляры правильно; трейлинг \b
работает как положено. Это ошибка - OpenOffice 4.1.3 работает правильно. Обходной путь должен использовать ([^a-z]\bc[a-z]*)\b
в качестве строки поиска с той же строкой замены: это работает во всех случаях, кроме случаев, когда первое слово документа начинается с c
.