Получите группы, которые вернули совпадение в Java Regex.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Получите группы, которые вернули совпадение в Java Regex.

Сообщение Anonymous »

Я пишу простой лексер на Java, и основной метод класса выглядит следующим образом:

Код: Выделить всё

public LinkedList tokenize() {
// Create a matcher for the input string
Matcher matcher = tokensPattern.matcher(input);

// Create an empty list for the result
LinkedList tokensList = new LinkedList();

// While matches are found, keep looping
while (matcher.find()) {
// Get match
String matchStr = matcher.group();

// Check which token matched to create the apropriate Token object
for(PossibleTokens t : PossibleTokens.values()) {
if (matcher.group(t.name()) != null)
tokensList.add(new Token(t.name(), matchStr));
}
}

// Return list of Tokens
return tokensList;
}
Я храню возможные токены для лексера в перечислении под названием Возможные токены. Каждый элемент в этом перечислении содержит шаблон регулярного выражения для токена, который он представляет. Кроме того, имена констант используются для создания соответствующей группы захвата имен для каждого токена.
Код работает так, как ожидалось, но мне не очень нравится то, что нужно проверять какая группа совпала, мне нужно просмотреть их все и проверить, какая из них не равна нулю.
Есть ли лучший способ получить совпавшую группу без необходимости перебирать все групп?
Это было бы очень полезно, потому что я планирую расширить количество токенов, которые принимает этот лексер, в будущем. Поэтому проверять каждую группу каждый раз было бы очень неэффективно.

Подробнее здесь: https://stackoverflow.com/questions/790 ... java-regex
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»