Ви отримуєте помилку, оскільки у вашому операторі Find є лише два набори круглих дужок, що позначають логічні рядки, ([A-Z])*([A-Z])
а у вашому операторі Replace /1/2/3^p
ви говорите про три набори.
Якщо ви хочете залишити оператор Замінити таким, яким є, то змініть оператор Find на ([A-Z])(*)([A-Z])
. Хоча, можливо, ви не дуже задоволені результатами, які вони повертають, але спробуйте і подивіться, чи це ви хочете. Він поверне кілька слів завдяки включенню *
підстановки.
Краще твердження Find для знаходження всіх великих літер: <([A-Z]{2,10})>
Це ліві та праві символи стрілок направляють на пошук, щоб знайти лише слова, які починаються із включених критеріїв. Поле керування з фігурними дужками повідомляє Знайти, що має бути як мінімум 2 символи та максимум 10 (я просто випадковим чином вибрав 10 як макс. Ви можете встановити його на що завгодно) з попередніх критеріїв. Використовуючи цей підстановочний код Find, слід замінити оператор /1^p
.
(...)
, значить\3
, поза межами діапазону. Я не встиг перевірити, але, припускаючи, що Word обробляє весь спектр регулярних виразів, тоді все, що вам потрібно, це([A-Z]*[A-Z])
->\1^p
, де\1
посилається на всю відповідну рядок. Жадібна відповідність гарантує відповідність усього слова, хоча рядок на зразокABC123DEF
буде замінено, як ви можете, чи не захочете.