Может ли Java String.indexOf () обрабатывать регулярное выражение в качестве параметра? - PullRequest
36 голосов
/ 16 ноября 2010

Я хочу захватить индекс определенного регулярного выражения в строке Java. Эта строка может быть заключена в одинарные или двойные кавычки (иногда без кавычек). Как я могу захватить этот индекс с помощью Java?

например:

capture String -->  class = ('|"|)word('|"|)

Ответы [ 2 ]

41 голосов
/ 16 ноября 2010

Нет .

Проверка исходного кода для проверки

Обход: Это не стандартная практика, но вы можетерезультат с помощью этого.

Обновление:

    CharSequence inputStr = "abcabcab283c";
    String patternStr = "[1-9]{3}";
    Pattern pattern = Pattern.compile(patternStr);
    Matcher matcher = pattern.matcher(inputStr);
    if(matcher.find()){

    System.out.println(matcher.start());//this will give you index
    }

ИЛИ

Regex r = new Regex("YOURREGEX");

// search for a match within a string
r.search("YOUR STRING YOUR STRING");

if(r.didMatch()){
// Prints "true" -- r.didMatch() is a boolean function
// that tells us whether the last search was successful
// in finding a pattern.
// r.left() returns left String , string before the matched pattern 
int index = r.left().length();
} 
32 голосов
/ 16 ноября 2010

Это двухэтапный подход.Сначала найдите соответствие для вашего шаблона, затем (во-вторых) используйте Matcher#start, чтобы получить позицию совпадающей строки в строке содержимого.

Pattern p = Pattern.compile(myMagicPattern);  // insert your pattern here
Matcher m = p.matcher(contentString);
if (m.find()) {
   int position = m.start();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...