Zapytanie java regex

Odpowiedz Nowy wątek
2011-07-15 02:59
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ź

Pozostało 580 znaków

2011-07-15 08:33
0

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

Pozostało 580 znaków

2011-07-15 10:56
0

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

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

Pozostało 580 znaków

2011-07-15 11:26
0

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

Pozostało 580 znaków

2011-07-15 11:39
0

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

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

edytowany 4x, ostatnio: lukasw44, 2011-07-15 12:41
spróbuj znacznika <code> albo wrzuć na pastebin - Wibowit 2011-07-15 11:56

Pozostało 580 znaków

2011-07-15 12:47
0

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

Pozostało 580 znaków

2011-07-15 14:04
::.
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.

Pozostało 580 znaków

2011-07-17 01:26
pootek
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.

Pozostało 580 znaków

2011-07-18 12:41
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

Pozostało 580 znaków

2011-07-18 13:01
::.
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.

Pozostało 580 znaków

2011-07-18 14:32
::.
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

:D no to się gdzieś pomyliłem :/ - lukasw44 2011-07-18 15:05

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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