Regex Problemi
-
Elimde
" 52. "
şeklinde içerisinde boşluk(space) ve "sayı.",
"52."
şekilnde içerisinde "sayı." ve
"dsadasda 52. dadadsa"
gibi "karakter" "sayı." barındıran stringler var. Ben sadece " 52. ", "52." olanları tespit etmek istiyorum. Ancak birtürlü doğru pattern'i bulamadım.
-
http://stackoverflow.com/questions/10546302/find-all-pattern-indexes-in-string-in-c-sharp
Şurdaki cevaba mütabiken
SpArK tarafından 10/Oca/13 00:46 tarihinde düzenlenmiştirstring pattern ="52.";
string sentence ="4552.78$$#56$$J52.K01UU";
IList indeces =newList();
foreach(Match match inRegex.Matches(sentence, pattern)){ indeces.Add(match.Index);
}
indeces'ın içinde, 2 ve 14. yerler olacak 52. nin yerini veren. Bu başlangıç olabilir, Regex.Match() olayına girmeden belki ? http://www.dotnetperls.com/regex-match -
Sağolasın hacı, bende durumu şöyle kurtardım, gelen string'i öncelikle trim() ile boşluklardan arındırdım. Daha sonra da şu pattern ile işimi hallettim.
"^\d*\.$" -
Trim yapmana gerek yok. Sadece 50. gibi rakam ve sonunda nokta olmasını istediğin ifadeyi almak istiyorsan baştaki ^ ve sondaki $ işaretlerini kaldır. Ayrıca \d* deki * hiç sayı bulunmasa bile çalışır. Yani senin ifadende . geçen bir eşleşme bulunursa, önünde sayı olmasa bile kabul edilir.
"\d+\."
olarak güncellersen daha iyi olur. Buradaki "+" 1 veya daha çok rakam eşleşmesi sağlandığında çalışır.
Austen tarafından 10/Oca/13 10:37 tarihinde düzenlenmiştir -
(\d+) ile bulabilirsin kolayca
