2014-06-28 55 views
5

Düzenli bir ifade kullanarak (Ant'de replaceregexp) bir çizginin başlangıcından sonuna kadar herşeyi nasıl ekleyebilirim (ve sonra değiştiririm) ?her zamanki gibi herşeye uygun düzenli ifade/

../replace_this/replace_this/Keep_this

../../replace_this/keep_this /../: Ben gerekenler

bunlardan herhangi biriyle başlamaktır

../replace_this/replace_this/Keep_this ve bu bunları açmak:

o basit olmalıdır ancak bunu alamıyorum gibi 0

what_I_addedKeep_this

görünüyor. Son eğik çizgiyi tanımlayacak ve çizginin sonuna kadar eşleşecek düzenli ifadeler yaptım, ama ihtiyacım olan şey, çizginin başlangıcından son eğime kadar her şeyle uyuşacak bir şey, yani hepsini değiştirebilirim. .

Bu, bir grup .txt dosyasını okuyan ve içinde bulduğu tüm bağlantıları dönüştüren bir Ant derleme dosyası içindir. Ben sadece replaceregexp, değil değişkenleri veya özellikleri kullanmak istiyorum. Eğer mümkünse.

.*\/ 

ve metin ile değiştirin:

+0

Teşekkür, evet ilk cevap onu çözdü tamamen, "oylama" tıklamayı denedim ama oy vermeden önce 15 puan almam gerektiğini söyledi, ama benim gibi bir yenb için bile kullanılabilir olan onay işareti seçeneğini bilmiyordum, bu yüzden teşekkürler ve ben ve şimdi onu kontrol ettim. Tüm cevaplar regexp'in ne yaptığını öğrenmek için ilginçti, ama ilk önce bunu benim için çözmüştü. Hepsini kabul etmeli miyim? Tekrar teşekkürler. – user3762977

+0

BTW Yukarıdaki "Bilgileriniz için teşekkürler" yorumu, bir yanıtın "kabul edilmesi" için onay işareti özelliği hakkında bana bilgi veren birinden, artık yok olan bir yoruma yanıt olarak yapıldı. – user3762977

cevap

2

Seçenek 1

  • Arama: ^.*/
  • değiştirin: * nicelik açgözlü olduğu için Empty string
  • , ^.*/ çok için satırın başından maç olacak son eğik çizgi. Böylece onu boş bir dizeyle doğrudan değiştirebilirsiniz ve istediğiniz metne bırakılırsınız.

Seçenek 2

  • Arama: ^.*/(.*)
  • değiştirin: Grup 1
  • Yine (genellikle, sözdizimi Ant konusunda emin $1 veya \1 değil olurdu), ^.*/ eşleştiği son eğik çizgi. Daha sonra, satırın sonunu (.*) ile Grup 1'e yakalayın ve tüm eşleşmeyi Grup 1 ile değiştirin.
  • Benim görüşüme göre, bu seçeneği belirlemenin bir nedeni yok, ancak bunu anlamak güzel.
+0

Seçenek 2 için bu daha kolay olabilir: '[^ \ /] * $'. – Markus

+0

@Markus Haklısınız, bu dizenin sonunu güzelce eşleştirir. :) – zx81

1

Yapmak istediğiniz şey, açgözlülükle eşleşmesidir, desenin mümkün olan en uzun eşleşmesidir, varsayılan değerdir, ancak '/' son durumuna kadar eşleşir.

böyle bir şey olurdu

:

.*\/ 

Açıklama:

. any character 
* any and all characters after that (greedy) 
\/ the slash escaped, this will stop at the **last** instance of '/' 

Burada eylem görebilirsiniz: bilgi için http://regex101.com/r/pI4lR5