регулярное выражение Java найти строку добавить ее в массив, а затем заменить оригинал - PullRequest
0 голосов
/ 14 сентября 2011

У меня есть строка текста, подобная этой:

This is a[WAIT] test.

Что я хочу сделать, это найти в строке подстроку, которая начинается с [и заканчивается]. Каждую найденную строку я хочу добавить.в ArrayList и замените подстроку в исходной строке на ^

Вот мое регулярное выражение:

String regex_script = "/^\\[\\]$/"; //Match a string which starts with the character [ ending in the character ] 

Вот что у меня есть:

StringBuffer sb = new StringBuffer();

Pattern p = Pattern.compile(regex_script); // Create a pattern to match
Matcher m = p.matcher(line);  // Create a matcher with an input string
boolean result = m.find();
        while(result) {
                m.appendReplacement(sb, "^");
                result = m.find();
        }
        m.appendTail(sb); // Add the last segment of input to the new String

какхотел бы я сделать это?Спасибо

Ответы [ 2 ]

2 голосов
/ 14 сентября 2011

вы можете сделать:

    String regex_script = "\\[([^\\]]*)\\]";

    String line = "This is a[WAIT] testThis is a[WAIT] test";
    StringBuffer sb = new StringBuffer();
    List<String> list = new ArrayList<String>();   //use to record

    Pattern p = Pattern.compile(regex_script); // Create a pattern to match
    Matcher m = p.matcher(line); // Create a matcher with an input string

    while (m.find()) {
        list.add(m.group(1));
        m.appendReplacement(sb, "[^]");
    }
    m.appendTail(sb); // Add the last segment of input to the new String

    System.out.println(sb.toString());
0 голосов
/ 14 сентября 2011

Если вы ищете подстроку, не используйте ^ и $. Они предназначены для начала и конца строки (не слова). Попробуйте:

String regex_script = "/\[.*\]/";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...