-2

I have this String:

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

How can I get the first part of the String (numbers) without the use of substrings.

Emma
  • 27,428
  • 11
  • 44
  • 69
Apollocy
  • 67
  • 2
  • 8

2 Answers2

2

Here, we might just want to collect our digits using a capturing group, and if we wish, we could later add more boundaries, maybe with an expression as simple as:

([0-9]+)

For instance, if our desired digits are at the start of our inputs, we might want to add a start char as a left boundary:

^([0-9]+)

Or if our digits are always followed by a ., we can bound it with that:

^([0-9]+)\.

and we can also add a uppercase letter after that to strengthen our right boundary and continue this process, if it might be necessary:

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

enter image description here

RegEx

If this expression wasn't desired, it can be modified or changed in regex101.com.

RegEx Circuit

jex.im visualizes regular expressions:

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);

Demo

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);
Emma
  • 27,428
  • 11
  • 44
  • 69
1

To extract a part or parts of string using regex I prefer to define groups.

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");
    }

}
Conffusion
  • 4,335
  • 2
  • 16
  • 28