Zapytanie java regex

0

Witam

mam takie pytanko
nie mam za dużego doświadczenia w pisaniu wyrażeń w regex

potrzebuje z danego Stringu wyciągnąć zdania znajdujące się między cudzysłowami czyli np " ala ma kota"

czyli musi zaczynać sie od " i kończyć " czyli ogólnie żebym miał to co jest między cudzysłowami
funkaja musi zwracać np tablice String[] bo np w danym tekście możę wystąpić kilka cudzysłowów
dziękuję za odpowiedź

0

A coś już napisałeś czy nawet nie spóbowałeś ?

0

próbowałem w regex napisać zapytanie ale mi nie wychodzi :/

jak bym nie próbował to bym posta nie pisał

0

Może pokaż to co zaczołeś robić.

0

chodzi mi głównie o wyrażenie w regex

ja napisałem coś takiego ("^["\""] [[:alnum:]]["\""]$")

0

Wybacz nie bardzo widzę idee twojej próby rozwiązania
Ja bym póbował na początek tak:
"\".*?\""

0
package test;


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


public class Test {

    public static void main(String[] args) throws Exception {
        String s = "'abc' dev 'aasc' \"fdfd aaa ddd\" 'aa \"fdfd\" bb'";
        Pattern p = Pattern.compile("([\"']).+?\\1");
        Matcher m = p.matcher(s);
        while (m.find()) {
            System.out.println(m.group());
        }
    }
}
</java>
Ten regex powinien dzoalac. On szuka cudzyslowia lub apostrofu, bierze wszystkie znaki za nim, az do pierwszego napotkanego cudzyslowiu lub apostrofu, przy czym wymaga (za pomoca capture groupy \1) aby otwierajacy i zamykajacy znak byl ten sam, dzieki temu wspiera zagniezdzenia, jak w ostatnim wypisanym 'zdaniu'.
Jesli zdania maja byc wypisane bez cudzyslowiow, nalezy popracowac troszke wiecej:
```java
package test;


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


public class Test {

    public static void main(String[] args) throws Exception {
        String s = "'abc' dev 'aasc' \"fdfd aaa ddd\" 'aa \"fdfd\" bb'";
        Pattern p = Pattern.compile("([\"'])(.+?)\\1");
        Matcher m = p.matcher(s);
        while (m.find()) {
            System.out.println(m.group(2));
        }
    }
}

On dodaje capture group pomiedzy cudzyslowiami, i m.group(2) odputyje tylko o ta grupe, ignorujac te cudzyslowia.

Ten regex pewnie nie obsluguje wszystkich przypadkow, lecz jest juz dosc dobry.

0

Ludzie! Korzystajcie ze słownika czasem. Cudzysłów -> cudzysłowy. A także: między cudzysłowami a nie "cudzysłowiami". Cudzysłów odmienia się jak rów. Nawet zwykłe sprawdzanie pisowni w firefox to wychwytuje.

0

Witam dzięki śliczne za regexa

działa bardzo dobrze zastanawia mnie tylko dlaczego jak dałem

s.replaceAll("(["'])(.+?)\1", " ");

to nie chce działaś jak przecież replaceAll tez wymaga regexa ???

chciałem po prostu usunąć to co wyszuka regex ze stringu

0
pootek napisał(a)

Ludzie! Korzystajcie ze słownika czasem. Cudzysłów -> cudzysłowy. A także: między cudzysłowami a nie "cudzysłowiami". Cudzysłów odmienia się jak rów. Nawet zwykłe sprawdzanie pisowni w firefox to wychwytuje.

Polski to dla mnie drugi jezyk, wiec nie fikaj.

0
lukasw44 napisał(a)

Witam dzięki śliczne za regexa

działa bardzo dobrze zastanawia mnie tylko dlaczego jak dałem

s.replaceAll("(["'])(.+?)\1", " ");

to nie chce działaś jak przecież replaceAll tez wymaga regexa ???

chciałem po prostu usunąć to co wyszuka regex ze stringu

U mnie dziala ;d

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