Возвращение найденной строки с регулярным выражением - PullRequest
4 голосов
/ 06 января 2012

Если у меня есть регулярное выражение, как я могу вернуть найденную подстроку? Я уверен, что я должен упустить что-то очевидное, но я нашел различные методы, чтобы подтвердить, что эта подстрока содержится в строке, которую я ищу, или заменить ее чем-то другим, но не для возврата того, что я нашел .

Ответы [ 3 ]

7 голосов
/ 06 января 2012
Matcher matcher = Pattern.compile("a+").matcher("bbbbaaaaabbbb");
if(matcher.find())
     System.out.println(matcher.group(0)); //aaaaa

Если вы хотите конкретные детали

Matcher matcher = Pattern.compile("(a+)b*(c+)").matcher("bbbbaaaaabbbbccccbbb");
if(matcher.find()){
   System.out.println(matcher.group(1)); //aaaaa
   System.out.println(matcher.group(2)); //cccc
   System.out.println(matcher.group(0)); //aaaaabbbbcccc 
}

Группа 0 является полным шаблоном. Остальные группы разделяются круглыми скобками в регулярном выражении ( a + ) b *( c + ) и могут быть получены индивидуально

2 голосов
/ 06 января 2012
CharSequence inputStr = "abbabcd";

String patternStr = "(a(b*))+(c*)";

// Compile and use regular expression
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.find();

if (matchFound)
{
    // Get all groups for this match
    for (int i=0; i<=matcher.groupCount(); i++) 
    {
        String groupStr = matcher.group(i);
    }
}

CharSequence - это читаемая последовательность значений char.Этот интерфейс обеспечивает равномерный доступ только для чтения к различным типам последовательностей символов.Значение char представляет символ в базовой многоязычной плоскости (BMP) или суррогат.Подробнее см. В разделе Представление символов Unicode.

CharSequence - это интерфейс

public interface CharSequence

См. Группы захвата

См. группа с параметром пример

См. Учебник по Java Regex

1 голос
/ 06 января 2012
import java.util.regex.*;

class Reg
{
  public static void main(String [] args) 
  {
    Pattern p = Pattern.compile("ab");
    Matcher m = p.matcher("abcabd");
    System.out.println("Pattern is " + m.pattern());
    while(m.find())
    {
      System.out.println(m.start() + " " + m.group()); 
      // m.start() will give the index and m.group() will give the substring
    }  
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...