Extract all substrings starting and ending with a regular expression from a large string

I have a large string that contains multi-line substitutions between two constant marker strings that I can identify with a regular expression.

To simplify, I called them abcdefand fedcbahere:

abcdef Sed lobortis nisl sed malesuada bibendum. fedcba
...

abcdef Fusce odio turpis, accumsan non posuere placerat. 
1
2
3
fedcba

abcdef Aliquam erat volutpat. Proin ultrices fedcba

How can I get all occurrences, including bullets from a large string?

+4
source share
2 answers

Sort of

Pattern r = Pattern.compile("abcdef[\\s\\S]*?fedcba");
Matcher m = r.matcher(sInput);
if (m.find( )) {
    System.out.println("Found value: " + m.group() );
}

where sInputis your search string.

[\s\S]*? fedcba. ? - , , fedcba ( ), .

+5

REGEXP:

(?:\babcdef)(?:.*\n)*(?:\bfedcba)

JAVA:

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

final String regex = "(?:\\babcdef)(?:.*\\n)*(?:\\bfedcba)";
final String string = "patata\n"
     + "abcdef\n"
     + "Aliquam erat volutpat. Proin ultrices\n"
     + "Testing\n\n"
     + "test[](test)\n"
     + "Testing\n"
     + "fedcba\n"
     + "Testing\n\n\n\n";

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

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}

:

patata
abcdef
Aliquam erat volutpat. Proin ultrices
Testing

test[](test)
Testing
fedcba
Testing

:

abcdef
Aliquam erat volutpat. Proin ultrices
Testing

test[](test)
Testing
fedcba

: https://regex101.com/r/xXaLgN/5

Enjoy.

, , .

+1

Source: https://habr.com/ru/post/1666514/


All Articles