Regex для извлечения текста, имеющего этот образец - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть строки текста, имеющие эту форму

  • Введение
  • Установка
  • 1.2 Windows Установка
  • 1.3 Linux Установка
  • 1.3.1 ............
  • 1.3.1.1 ..........

I хотите, чтобы REGEX обнаружил и извлек di git, имеющего эту форму: X. или XX или XXX или XX.X или X.XX ...

Ответы [ 3 ]

1 голос
/ 11 апреля 2020

Вы можете использовать [^.][0-9.]+ в качестве регулярного выражения.

  1. [^.] упадет в начале любого .
  2. [0-9.]+ будет соответствовать комбинации цифр и точек.

Демо:

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

public class Main {
    public static void main(String args[]) {
        String[] testStrs = { "Introduction", "1.2 Windows Installation", "1.3 Linux Installation",
                "1.3.1 ............", "1.3.1.1 .........." };
        Pattern pattern = Pattern.compile("[^.][0-9.]+");
        for (String str : testStrs) {
            Matcher matcher = pattern.matcher(str);
            if (matcher.find()) {
                System.out.println(matcher.group());
            }
        }
    }
}

Выход:

1.2
1.3
1.3.1
1.3.1.1
0 голосов
/ 11 апреля 2020

в моем случае вот правильный REGEX: [0-9.] + (\ S * \ w) +

реализация в java:

Pattern p = Pattern.compile("[0-9.]+(\\s*\\w)+");
Matcher m = p.matcher(str);
boolean found = m.matches();
0 голосов
/ 11 апреля 2020

Следующее выражение будет соответствовать всем вашим примерам:

/(^[\d\.]+)/gm

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

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

.1.2 The numbers here will be matched
1.2. These numbers will also be matched

Если это проблема, я рекомендую удалить эти периоды с помощью replaceFirst(), substring() или что-то подобное.

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