Java Regexp разъяснения - PullRequest
       1

Java Regexp разъяснения

0 голосов
/ 03 ноября 2011

У меня есть строка вроде:

<RandomText>
executeRule(x, y, z)
<MoreRandomText>

Я хотел бы выполнить следующее: если эта строка executeRule существует в большем текстовом блоке, я хотел бы получить ее второй параметр.

Как я мог это сделать?

Ответы [ 2 ]

2 голосов
/ 03 ноября 2011
import java.util.regex.Matcher;
import java.util.regex.Pattern;
...
Pattern p = Pattern.compile("executeRule\\(\\w+, (\\w+), \\w+\\)");
Matcher m = p.matcher(YOUR_TEXT_FROM_FILE);
while (m.find()) {
  String secondArgument = m.group(1);
  ...process secondArgument...
}

После выполнения этого кода secondArgument будет содержать значение y. Приведенное выше регулярное выражение предполагает, что вы ожидаете, что аргументы состоят из символов слова (то есть строчных и заглавных букв, цифр и подчеркивания).

Двойная обратная косая черта необходима для строкового литерального синтаксиса Java, механизм регулярных выражений будет видеть одиночные обратные косые черты.

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

Pattern p = Pattern.compile("executeRule\\(\\s*\\w+\\s*,\\s*(\\w+)\\s*,\\s*\\w+\\s*\\)");
2 голосов
/ 03 ноября 2011

Что вы подразумеваете под большим текстовым блоком?

Если вы хотите извлечь второй параметр из этого выражения, это будет что-то вроде

executeRule\(\w+,\s*(\w+),\s*\w+\)

Второй параметр хранится в группе захвата $ 1.

Имейте в виду, что для использования этого выражения в Java вам нужно экранировать '\'. Кроме того, я просто предполагаю, что \ w достаточно хорош, чтобы соответствовать вашим параметрам, что будет зависеть от ваших конкретных правил.

Если вам нужна помощь с фактическим использованием регулярных выражений в Java, есть много ресурсов, к которым вы можете обратиться, я считаю, что это руководство довольно простое, и оно объясняет основные способы использования: http://www.vogella.de/articles/JavaRegularExpressions/article.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...