Как получить символ перед определенным символом с помощью регулярного выражения? - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть эта строка: "2x+10=100".Теперь я хочу знать, каким персонажем является персонаж до 100.Как я могу получить это с регулярным выражением?

Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 04 февраля 2019

Вы можете использовать группу захвата , чтобы получить часть соответствующей строки.Например, этот код:

Matcher matcher = Pattern.compile("([a-z]+)[0-9]+").matcher("abc456");
assert matcher.matches();
System.out.println(matcher.group(1));

Распечатывает:

abc

См. Также: Документы Java Pattern class .

0 голосов
/ 04 февраля 2019

Это регулярное выражение ищет любой отдельный символ перед "100" и захватывает его в первой группе: (.)100.Скобки означают группу захвата.Точка означает любой отдельный символ.

0 голосов
/ 04 февраля 2019

Другие ответчики правы, что (.)100 является регулярным выражением, необходимым для этого соответствия, но я считаю, что иногда особенности использования регулярного выражения могут запутать нового пользователя.Так как ваш вопрос помечен Java, вот пример кода Java, который показывает используемое регулярное выражение, основанный на этом примере кода .

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches {
   public static void main( String args[] ) {
      // String to be scanned to find the pattern.
      String line = "2x+10=100";
      String pattern = "(.)100";

      // Create a Pattern object
      Pattern r = Pattern.compile(pattern);

      // Now create matcher object.
      Matcher m = r.matcher(line);

      if (m.find( )) {
         System.out.println("Found value: " + m.group(1) );
      } else {
         System.out.println("NO MATCH");
      }
   }
}

Вы также можете воспользоваться такими сайтами, как Regex101 , чтобы помочь вам поиграть с регулярным выражением и научиться создавать свои собственные шаблоны.

0 голосов
/ 04 февраля 2019

Не могли бы вы попробовать следующее.Это даст 1 символ непосредственно перед 100.

.(?=100)

Regex Demo:

Или в случае, если вам нужно сопоставить символ, который предшествует последним 100 (учитывая, что еслив случае, если есть несколько 100 вхождений, и вам нужно последнее 100 значений (1), попробуйте выполнить следующее.

.(?=100$)

Краткое пояснение: здесь используется метод положительного прогнозирования вперед и вперед и убедитесь, что в нем присутствует 100 (?=100) затем упомянув . DOT перед ним, чтобы получить самый первый символ до 100.

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