#regex #eclipse #replace
#регулярное выражение #eclipse #заменить
Вопрос:
Я все еще развиваю свои навыки регулярных выражений, поэтому я полагаюсь на сообщество. Я говорю, что хочу реорганизовать код «с помощью Eclipse», но я использовал ряд IDE, чьи функции поиска и замены принимают регулярные выражения. Я успешно создал общие выражения для поиска чего-либо, но задаюсь вопросом, могу ли я взять части соответствующего шаблона и использовать в заменяющем значении. Например, у меня есть много тестовых функций, имена которых соответствуют следующему шаблону» «testSomeFunction1(), testSomeFunction2(), testAnotherFunction()» Мне бы очень хотелось, чтобы они назывались «test_someFunction1(), test_someFunction2(), test_anotherFunction()». Find: это «test[A-Z]», но что я использую для замены на:? «test_[a-z]» буквально заменяет? Возможно, я не могу использовать оператор regex при замене?
Комментарии:
1. Мне любопытно: поскольку у вас уже есть предположение о том, что вам нужно сделать, почему бы вам просто не попробовать это в Eclipse?
2. Спасибо Sandman. Я должен был быть ясен. Я уже пробовал это и потерпел неудачу. Отсюда и причина обращения за помощью.
3. Вы пробовали захватывать группы и ссылаться на них, как показано в моем ответе?
Ответ №1:
Для опубликованного вами примера текста выражение find должно быть test([a-z]*)
, а replace должно быть test_$1
.
При этом используются захваченные группы, на которые ссылается, $i
где i
— индекс захваченной группы ( 0
это все выражение). Вы также можете рассмотреть регистр строки поиска, поскольку текст типа permuteString
также будет соответствовать выражению, если поиск выполняется без учета регистра.
Вы также должны иметь возможность использовать content-assist в текстовых полях Find/Replace
диалогового окна, чтобы увидеть, какие параметры доступны для регулярных выражений (после того, как вы установили флажок для Regular expressions
) — нажмите CTRL SPACE
Комментарии:
1. Спасибо! Это действительно помогает узнать термины для поиска «групп с обратными ссылками», чем больше я узнаю, тем больше понимаю, как многого я не знаю.
2. Всегда пожалуйста. Я нашел, что руководство по регулярным выражениям Java является хорошей отправной точкой — оно, конечно, специфично для Java, но многие концепции довольно общие.
Ответ №2:
Обязательно ознакомьтесь с оператором регулярного выражения C, который, я думаю, специфичен для Eclipse. Это экономит много работы при замене одного и того же слова в вариантах верхнего регистра, нижнего регистра и camelCase. Например, если исходный текст является:
SomeObject someObject = SOMEOBJECT;
затем выполняем замену «Заменить все»
someObject
с
CanotherObject
поможет вам:
AnotherObject anotherObject = ANOTHEROBJECT;
вероятно, это то, чего вы хотите.