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.