bir açıklama ile başlatılıyor ... belirli bir parça kadar eşleştirmek için hızlı yanıtlar
için sonuna kadar atlayabilir metin, ve orada olduğunu teyit ama eşleşme ile dahil değil, (?=regex)
notasyonu kullanarak, olumlu bir lookahead kullanabilirsiniz
Bu, "regex" öğesinin bu konumda olduğunu doğrular, ancak yalnızca başlangıç konumuyla eşleşir, içeriğinin değil. (Çoğu miktarı mümkün tüketir düzenli *
kıyasla mümkün olan en az miktarda tüketir)
.*?(?=All text before this line will be included)
.
herhangi bir karakter olan
ve *?
tembel maç:
Yani, bu bize bir ifade verir. Bununla birlikte, hemen hemen tüm regex tatlarında .
, yeni satırı hariç tutacaktır, bu yüzden yeni satırları içerecek şekilde bir bayrağı açıkça kullanmamız gerekir. Kullanılacak bayrak, s
, ("Tek satırlı mod" anlamına gelen), bazı tatlarda "DOTALL" modu olarak da anılır olsa da).
Ve bu da dahil olmak üzere çeşitli yöntemlerle uygulanabilir ...
Küresel olarak,/tabanlı regexes için:
/regex/s
Inline'ın, ifadeler için küresel:
(?s)regex
Satır içi, yalnızca parantezlenmiş bölüm için geçerlidir:
(?s:reg)ex
Ve bir işlev argümanı olarak (regex ile hangi dili yaptığınıza bağlı olarak değişir).
(?s).*?(?=All text before this line will be included)
Ancak
, bazı uyarılar vardır:
Yani, muhtemelen istediğiniz regex şudur Öncelikle
, tüm regex tatlar tembel nicelik desteklemek - Sadece .*
'u kullanmanız gerekebilir (ya da "Tüm metinlerse, kesin gereksinimlere bağlı olarak daha karmaşık bir mantık kullanmak mümkündür." önce ... "birden çok kez görünebilir). İkinci olarak, tüm regex tatları lookaheads'i desteklemez, böylece eşleştirmek istediğiniz metni almak için yakalanan grupları kullanmanız gerekir. Bu nedenle
Son olarak, her zaman bu tür yukarıdaki s
olarak bayraklar, belirtemez, böylece eşdeğer eşleme almak için ya maç "bir şey veya yeni satır" (.|\n)
ya da belki [\s\S]
(boşluk değil boşluk) gerekebilir.
([\s\S]*)All text before this line will be included
Sonra maç sonucundan ilk alt grubu olarak ayıkla: tüm bu (I XML uygulama olduğunu düşünüyorum) tarafından sınırlama varsa
, o zaman yapmanız gerekecek.
Bu eşleme, * "Bu satırdan önceki tüm metinler eklenecektir" metnini içerecektir. Bu, orijinal sorudan isteniyorsa açık değildir, ancak yanıt vermeme durumunda cevabımı görmeme bakın. –
İlk alt grubun eşleşen metni içereceğini ima etmek istedim. Açıklığa kavuşturmak için düzenleyeceğim. – VoteyDisciple
Evet, ama ben, düşüncenin kavramsal olarak istediğim şeye daha yakın olduğunu iddia ediyorum (ve dolayısıyla daha iyi bir seçenek). Elbette, Lookahead her zaman mevcut değil, ama eğer sahip değilseniz muhtemelen tembel eşleme de yoktur ... Bütün bu bilgiyi cevabıma eklemeyi denedim, umarım açık bir şekilde yapılır. –