Giriş
Düzenli ifadeye (?=subexpression) şeklinde yazılır. Positive lookahead parantez içinde yazılmasına rağmen düzenli ifadedeki eşlemeye dahil edilmez. Yani non-consuming kabul edilir. Açıklaması şöyle.
Düzenli ifadeye (?=subexpression) şeklinde yazılır. Positive lookahead parantez içinde yazılmasına rağmen düzenli ifadedeki eşlemeye dahil edilmez. Yani non-consuming kabul edilir. Açıklaması şöyle.
Typically, a zero-width positive lookahead assertion is found at the end of a regular expression pattern. It defines a substring that must be found at the end of a string for a match to occur but that should not be included in the match. It is also useful for preventing excessive backtracking.
Örnek
Elimizde şöyle bir kod olsun. Önünde sayı, ardında yine bir sayı olan boşlukları siler.
Artarak giden 5 tane rakamı yakalamak için şöyle yaparız.
Belli bir kelimeye kadar olan grubu yakalamak için şöyle yaparız.
Souç olarak şunu alırız
"Once upon a time there"
Elimizde şöyle bir kod olsun. Önünde sayı, ardında yine bir sayı olan boşlukları siler.
string test = "Some Words 1 2 3 4";
string result = Regex.Replace(test, @"(?<=\d)\s+(?=\d)", "");
Çıktı olarak şunu alırız.Some Words 1234
ÖrnekArtarak giden 5 tane rakamı yakalamak için şöyle yaparız.
^\d*(?=\d{5}(\d*)$)0?1?2?3?4?5?6?7?8?9?\1$
Açıklaması şöyle.We can force it to match exactly 5 characters by combining a look-ahead of five digits and an arbitrary suffix (which we capture) and a backreference \1 (which must exactly the suffix matched by the look-ahead, ensuring we've now walked ahead 5 characters in the string).Örnek
Belli bir kelimeye kadar olan grubu yakalamak için şöyle yaparız.
/^.+?(?=\s*\b(?:was|in|for)\b)/
Elimzde "Once upon a time there was a fox in a hole"; olsunSouç olarak şunu alırız
"Once upon a time there"
Hiç yorum yok:
Yorum Gönder