wyrażenia regularne - grupowanie

0

Witam,

Mam pewien problem odnośnie grupowania. Mianowicie chce aby z wyrażenia

\\s*.+mailto:(.+)\" title=\"

dało się odczytać wartość z grupowania np.matcher.group(1) lecz w przypadku gdy ten kawałem wyrażenia nie występuje to ma go pominąć. Dodam że to wycinek ze środka. Próbowałem pogrupować i użyć znaku ? ale nie chciało działać.

Z góry dzięki za pomoc.

1

Zdecydowanie szybciej by było jakbyś podał przykładowy string, który chcesz zmatchowac.
Czy robiles to w taki sposób? :

Pattern p = Pattern.compile(HERE_YOUR_PATTERN);
Matcher m = p.matcher(HERE_PUT_STRING_YOU_WANT_MATCH);

if(m.matches()) {
  result = m.group(1):
}

Edit: Co to znaczy że nie działa? Dodatkowo musisz sie upewnić ze liczba grup jest odpowiednia tzn czy wystąpil

(...)

EDIT2:
Mały przykład:

        Pattern p = Pattern.compile("[a-z]1:([a-z]2)?:[a-z]");
        Matcher m = p.matcher(YOUR_STRING);
        if (m.matches() && m.groupCount() == 2) {
            System.out.println(m.group(1));
        }

I teraz

"a1::b" ==>
m.matches() //true
m.groupCount() // 1
m.group(1) //exception
"a1:b2:c" ==>
m.matches() // true
m.groupCount() // 2
m.group(1) // "b2"
1

Spróbuj najpierw to napisać tutaj:
https://regex101.com

Ja zawsze uzywam tej stronki bo sie jeszcze uczę a od razu pieknie tlumaczy jak działa twój regex

1 użytkowników online, w tym zalogowanych: 0, gości: 1