2016-03-28 27 views
5

Düzenli dizgim var ve sınıflandırmak istiyorum, bu regex sabit önek veya yok. ÖrneğinDüzenli ifadeler sabit öneki

:

abcdef.*g[0abc]{0,5}hiabcdef

]1234vac.*12345 önek ]1234vac

(abc)+123 önek abc

ancak

[A-z]+12345 sahip belirlemiştir de yok önek ön sahip düzeltme (set A-z'den sembollerin bilinmeyen numarasından başlar)

Bu sorunun genel bir biçimde çözülmeyeceğini gerçekten anlıyorum mu?

+0

Bu dizelerden önek almak ister misiniz? – Shafizadeh

+0

@Shafizadeh, yes –

+0

ve önek, '.' Ile biten her şeydir? – Divisadero

cevap

1

bu RegEx deneyin:

^(
    (     # GENERAL before . (Dot) 
    (?!\w+\?)    # DO NOT MATCH if contains ? 
    [\w\]\)]+    # Word, ] or) characters 1 or more times 
)| 
    (?:\((\w+)\))|  # Words in between BRACKETS() 
    (     # BEFORE . (Dot) with ?, * or + 
     [\w\]\)]+    # Select Characters 
     (?![?*+])    # DO NOT select last character if there is ?, * or + after it 
) 
) 

Live Demo on Regex101

Bana bozuk başka örnekler anlat, ben bu değiştireceğim. Ancak, sorudaki tüm örnekler üzerinde test ettim ve yorumlar

Ayrıca, bu sorusuyla bile gelmek nasıl mümkün! ;)

+0

Harika iş! Çözmeniz tüm vakaları kapsamıyor, ama istediğime benziyor. –

+0

@DenisGavrus Bana neyin örtülmediğini söylerseniz, onu değiştirebilirim. Ayrıca, sorunuza cevap verirse, kabul etmeyi düşünür müsün? – Druzion

+0

Genelde regex kullanarak bu problemi çözme şansı olmadığına inanıyorum, çünkü çok sayıda vakası vardır, özel karakterlerden kaçmıştır ve diğer (http: \/\/stackoverflow \ .com 'önekini almak için mükemmel olur regex 'http: \/\/stackoverflow \ .com \ /.*?\/[\ d] + 'ama ben regex tarafından neredeyse imkansız olduğunu anlıyorum (benim görevim URL'yi ayrıştırmak için değil, sadece örnek)) Sizin çözümünüz, örneğin, regex' den (abc) 'abc' önekini alır * ', ama önek değil, neden * - {0,} tekrarlar, '(abc)?' için. Ama yine de teşekkürler, cevabınızı daha sonra kabul edeceğim, eğer başka bir cevap alamıyorsam –

İlgili konular