Bir yer arıyorsanız, bu " "
(bir boşluk) olacaktır.
Bir veya daha fazlasını arıyorsanız, " *"
(bu iki boşluk ve yıldız işareti) veya " +"
(bir boşluk ve artı).
Eğer ortak aralık, kullanım arıyorsanız "[ X]"
veya "[ X][ X]*"
veya "[ X]+"
nerede X
fiziksel sekme karakteridir (ve her tüm bu örneklerde tek bir boşlukla öncesinde).
Bunlar şimdiye kadar gördüğüm her * regex motorunda çalışacak (bazıları bir veya daha fazlasına bile sahip değil"+"
karaktere sahip değil, ugh).
Daha modern regex motorlarından birini kullanacağınızı biliyorsanız "\s"
ve varyasyonları gitmenin yoludur. Ayrıca, kelime sınırlarının satır başlangıcı ve bitişiyle de eşleştiğine inanıyorum, boşluk bırakmadan veya izlemeden görünebilecek sözcükleri ararken önemlidir.
Özellikle PHP için bu sayfa yardımcı olabilir.
Düzenlemenizden, geçerli olmayan tüm karakterleri kaldırmak istediğiniz anlaşılıyor Bunun başlangıcı (normal ifadenin içindeki boşluğa dikkat edin):
$newtag = preg_replace ("/[^a-zA-Z0-9 ]/", "", $tag);
# ^ space here
Ayrıca, hileli her bir kelime arasında sadece bir boşluk olmasını ve başında veya sonunda hiçbir boşluk olmamasını istiyorsanız, bu biraz daha karmaşık (ve muhtemelen başka bir soru), ancak temel fikir şu olurdu:
$newtag = preg_replace ("/ +/", " ", $tag); # convert all multispaces to space
$newtag = preg_replace ("/^ /", "", $tag); # remove space from start
$newtag = preg_replace ("/ $/", "", $tag); # and end