2013-07-15 19 views
5

^ ve $ simgelerini aşağıdaki şekilde yalnızca /blog/articles ayrıştırmak için nasıl kullanırım?

Bu içeren ex3.txt oluşturduk:

/blog/article/1 
/blog/articles 
/blog 
/admin/blog/articles 

ve regex:

^/blog/articles$ 

Ben 'regetron' kullanarak yazdığınızda olduğu gibi çalışmaya görünmüyor (see learning regex the hard way) bir sonraki satırda çıktı yok.

Bu benim kesin bir işlemdir:

  1. doğru dizinde komut satırında, ben yazın: regetron ex3.txt. Ben girişler arasında satırsonu ile denedim rağmen

    /blog/haber/1/blog/makaleler/blog/yönetici/blog/makale

: ex3.txt aşağıdaki bir satır içerir.

  1. ben ^/blog/article/[0-9]$ yazıp şey sonraki satırda döndürülür.

  2. Gönderdiğim ilk çözümü ^\/blog\/articles$ deneyin ve hiçbir şey iade edilmiyor.

Şimdiden teşekkürler Soyer! Eğer eğik çizgi kaçış gerek

^\/blog\/articles$ 

:

+1

Normal ifadeniz hangi dilde kullanılıyor? – zzzzBov

+0

hangi dil aracını kullanıyorsunuz? – Anirudha

+0

Bu regex'i deneyin: '^ \/blog \/articles * $' – anubhava

cevap

1

Güncellemenize dayanarak, ^ gibi geliyor ve $ sizin için doğru operatör olmayabilir. Bunlar sırasıyla bir çizginin başlangıcı ve bitişi ile eşleşir. Bu ne yapar

(?:^|\s)(\/blog\/articles)(?:$|\s)

:

(?:^|\s)   Matches, but does not capture (?:), a line start (^) OR (|) a whitespace (\s) 
(\/blog\/articles) Matches and captures /blog/articles. 
(?:$|\s)   Matches, but does not capture (?:), a line end ($) OR (|) a whitespace (\s) 

Bu ikisi için çalışacak Eğer aynı satırda eşleştirmek istediğiniz birden dizeleri varsa, o zaman böyle bir şey daha gerekir durumlarda, ancak /blog/articles'dan önce ve sonra tek bir boşlukla eşleşeceğini (ancak yakalayamayacağını) unutmayın.

5
için normal ifade değiştirme

. Ayrıca, ex3.txt dosyanızdaki her satırın sonunda artık boşluk olmadığından emin olun.

+2

Onlardan kaçmadan bana çalışır: "perl -Esay 1"/blog/article "= ~ m [^/blog/articles $] ' '. – Quentin

+0

Ah, sondaki boşlukları kontrol etmedim. O ASAP yapacak! – goldisfine

+0

@Quentin Normal ifadeyi neyin ayrıştırdığına bağlıdır.Forward eğik çizgileri genellikle regex'te bir anlam ifade eder (örn: 'merhaba' kelimesi için global büyük harf duyarsız bir arama yapmak için 'hello/gi ') –

İlgili konular