Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > String.replaceAll() получение строки из рег.выр.


Автор: Molodec 31.8.2011, 20:52
Добрый день, господа.
Хочу написать некоторое обрамление строк. 
Чтобы строки, выбранные по регулярному выражению обрамлялись, допустим в [b]Строка[b].
Использую метод:
result=result.replaceAll("//.*\n", "[b][b]" );
Только вот проблема. Как между [b] [b] вставить найденную регулярным выражением строку? 
Может это уже реализовывалось в других библиотеках? 
А то как я только не пробовал... 
Вот один из нерабочих примеров:
Код

        String s;
        result=result.replaceAll(s="//.*\n", "[b]"+s+"[b]" );

Заранее спасибо. 
---
Закрывающий символ / для BB-кода удалил для отображения в символьном виде на данном форуме. 

Автор: priam220 31.8.2011, 21:18
Код

    public static void main(String[] args){
        String str = "xxxyxx";
        String pattern = "y";
        System.out.println(str.replaceAll(pattern, "<" + pattern + ">" ));
        }


Вывод: xxx<y>xx

Автор: aleksandy 1.9.2011, 09:38
Цитата(Molodec @  31.8.2011,  20:52 Найти цитируемый пост)
Только вот проблема. Как между  [b] вставить найденную регулярным выражением строку? 

[B]$1

Автор: priam220 1.9.2011, 12:38
группа будет 0:
Код

            String str = "xxxyxx";
            String pattern = "y";
            System.out.println(str.replaceAll(pattern , "[b]$0[\\\\b]" ));


или же надо указывать скобки:
Код

            String str = "xxxyxx";
            String pattern = "y";
            System.out.println(str.replaceAll("("+ pattern + ")", "[b]$1[\\\\b]" ));


Вывод: xxx[b]y[\b]xx

Автор: Molodec 3.9.2011, 22:03
priam220, спасибо большое. 
Этот вариант отлично работает:
Код

  String str = "xxxyxx";
            String pattern = "y";
            System.out.println(str.replaceAll(pattern , "[b]$0[\\\\b]" ));

+

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)