Условие соответствия в каждом случае - PullRequest
0 голосов
/ 17 марта 2019

Как я могу сделать, чтобы соответствовать каждому вхождению регулярного выражения в строке? Например, я хочу сделать так, чтобы каждое «<=» в строке имело номер слева и справа от него (если присутствует «<=»). </p>

То, что у меня есть, выглядит примерно так:

\d+ (<=) \d+

Но строка "4 <= 3 && 1 <= f" является истинной, поскольку первый случай верен, а если "<=" нет, возвращается false. </p>

Я собираюсь реализовать это регулярное выражение в Java.

Есть ли в любом случае сделать это с регулярным выражением?

1 Ответ

0 голосов
/ 17 марта 2019

Вы можете сделать это с помощью регулярного выражения:

String regexp = "((?<d>)\\d+|[^0-9])<=((?<d2>)\\d+|[^0-9])";
String text = "4<=3 && 1<=f";
Matcher matcher = Pattern.compile(regexp).matcher(text);
while (matcher.find()) {
        boolean result = !(matcher.group("d") == null && matcher.group("d2") != null ||
                           matcher.group("d") != null && matcher.group("d2") == null);
        System.out.println(result);    
}

Он печатает:

true
false

PS Конечно, парсер был бы лучшим подходом здесь.

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