Peşinde isteğe bağlı cat
alamadım nedeni .+?
bu isteğe olmayan demirlemiş hem olmasıdır isteksizce nitelikli: Motor o maç yapmak zorunda değildir, yasal olarak tedavi edebilir çünkü cat
, .+?
dizisinin "kuyruğu" olarak.
yo dize sonunda kedi, yani ^(dog).+?(cat)?$
kullanmak demirlemek varsa, gerçi bir maç, alacağı:
Pattern p = Pattern.compile("^(dog).+?(cat)?$");
for (String s : new String[] {"dog, cat", "dog, dog, cat", "dog, dog, dog"}) {
Matcher m = p.matcher(s);
if (m.find()) {
System.out.println(m.group(1)+" "+m.group(2));
}
}
Bu baskılar (demo 1)
dog cat
dog cat
dog null
Do Kedi sonra bir şey olması durumunda onunla nasıl başa çıkacağını biliyor musun?
Bunu, cat
dışında bir şey eşleşen bir yanıltıcıdır ifade oluşturarak başa çıkabilirim:
^(dog)(?:[^c]|c[^a]|ca[^t])+(cat)?
Şimdi
cat
çapa (
demo 2) olmadan hiçbir yere dizede gerçekleşebilir. dasblinkenlight cevabı @
Teşekkürler. Kediden sonra bir şey olması durumunda nasıl başa çıkacağınızı biliyor musunuz? Örneğin: 'köpek, köpek, kedi, blah'. Sadece ilk köpek ve isteğe bağlı kedi yakalamak istiyorum (en çok bir kedi olabilir). – forsajt
bu cevabı görmeyi çok isterim –