RegEx для захвата цифр из строки - PullRequest
0 голосов
/ 23 мая 2019

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

String filename = 20190516.BBARC.GLIND.statistics.xml;

Как получить первую часть строки (числа) без использования подстрок.

Ответы [ 2 ]

2 голосов
/ 23 мая 2019

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

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

public class B {

    public static void main(String[] args) {
        String in="20190516.BBARC.GLIND.statistics.xml";
        Pattern p=Pattern.compile("(\\w+).*");
        Matcher m=p.matcher(in);
        if(m.matches())
            System.out.println(m.group(1));
        else
            System.out.println("no match");
    }

}
2 голосов
/ 23 мая 2019

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

([0-9]+)

Например,если желаемые цифры находятся в начале наших входных данных, мы можем добавить начальный символ в качестве левой границы:

^([0-9]+)

Или, если за нашими цифрами всегда следует ., мы можем связатьэто с этим:

^([0-9]+)\.

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

^([0-9]+)\.[A-Z]

enter image description here

RegEx

Если это выражение не требуется, его можно изменить или изменить в regex101.com .

RegEx Circuit

jex.im визуализирует регулярные выражения:

enter image description here

Test

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

final String regex = "([0-9]+)";
final String string = "20190516.BBARC.GLIND.statistics.xml";
final String subst = "\\1";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);

// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);

System.out.println("Substitution result: " + result);

Демо

const regex = /([0-9]+)(.*)/gm;
const str = `20190516.BBARC.GLIND.statistics.xml`;
const subst = `$1`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);
...