Öncelikle [\d]{1}
\d
eşdeğerdir.
Sorunuzda, lookbehind/lookahead veya kelime sınırı gibi sıfır genişlikli bir onaylama kullanılması daha iyi olacaktır (\b
). Aksi takdirde, ikinci basamağın öncü alanı, ilk hanenin sonundaki boşluk olarak eşleştirileceğinden ardışık tek haneler ile eşleşmezsiniz (ve çakışan eşlemeler bulunmaz). İşte
ben bunu yazmak görecektir:
Bu "ondan önce bir boşluk olmayan karakter yoktur, ve bir boşluk olmayan karakter ondan sonra yok yalnızca, rakamı maç" anlamına
(?<!\S)\d(?!\S)
.
(?=\s)
yerine (?!\S)
gibi çift negatifleri kullandım, böylece dizenin başında veya sonunda bulunan tek haneleri eşleştirebilirsiniz. Eğer gerçekten sadece haneli boşluk içine alındığında eşleştirmek istiyor ve \b\d\b
izin vermek için 192.168.4.5
gibi bir dizesinde 4
ve 5
eşleşir benzediği için
Ben senin örneğin \b\d\b
üzerinden bu tercih
(?<!\S)\d(?![^\s.,?!])
köşeli parantez içindeki karakter sınıfına rakam (sonra izin vermek istediğiniz ek noktalama karakterleri ekleme, ama Mart'tan sonra olduğundan emin olun: sonunda noktalama, aşağıdaki kullanabilirsiniz e ^
).
Sen Burada bazı özel durumlar eksik. Sayı başlangıçta, sonunda ve bir dizgede sadece bir rakam olduğunda. – abc667