SORU
21 EYLÜL 2009, PAZARTESİ


Bir dize bulmak için düzenli İfade ayırıcılar HARİÇ tutarak iki karakter arasında bulunan,

Bir süre baktım, ama muhtemelen "" doğru kelimeleri ile, yani burada. soruyorum Google edemem Bir dize iki ayırıcıları, ayırıcılar kendilerini dönmeden arasında yer alan karakterler bir dizi ayıklamak gerekiyor. C# Düzenli ifade nesnesi ile yapmaya çalışıyorum.

Basit bir örnek yararlı olmalıdır:

Hedef: köşeli parantez dönmeden arasındaki dize ayıklamak kendilerini.

Temel dize:Bu test string [] daha fazla veya daha az

Aşağıdaki reg kullanıyorum. ex.

\[.*?\]

Maç "[daha fazla ya da daha az]". Sadece almam lazım "Aşağı Yukarı", parantez olmadan. Bunu yapmak mümkün mü? Çok teşekkürler.

CEVAP
21 EYLÜL 2009, PAZARTESİ


Kolay:

(?<=\[)(.*?)(?=\])

Teknik olarak bu lookaheads ve geriye ilerleme kullanıyor. Lookahead and Lookbehind Zero-Width Assertions bkz. Desen oluşur:

  • [(geriye ilerleme) yakalanır . öncesinde
  • olmayan açgözlü yakalanan bir grup. İlk durak] non-açgözlü ve
  • (ilerleme) yakalanan bir izledi.

Alternatif olarak sadece köşeli parantez arasında. yakalayabilirsiniz

\[(.*?)\]

ve bütün maç yerine ilk yakalanan grup dönün.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AlaskanGrizzly

    AlaskanGrizz

    30 EKİM 2009
  • Lupe Fiasco

    Lupe Fiasco

    23 ŞUBAT 2006
  • macpulenta

    macpulenta

    9 EYLÜL 2006