2011-07-25 46 views
2

我需要的(可能)正則表達式(或兩個)做如下:替換連字符周圍的空間與NBSP

  •  

我更換任何單個字母的單詞後,每一個空間發現這個question,但是,如果有撇號的詞(就像那裏),先前的正則表達式'認爲'撇號後的's'是單個字母(這是不正確的)。我只需要在單個字母之後/不需要任何其他字母(不是在單詞之後,而不是在單詞之後帶有撇號)之後需要空間

我希望有人熟練地在撇號捕獲後更新以前的答案。

謝謝!

回答

4

這是否符合您的期望?

/(?<=^\w) |(?<=\s\w)/

See it here on Regexr

(?<=\s\w)是回顧後,來檢查,如果存在空白和空白前一個單詞的字符。 (?<=^\w)是爲了說明單個字母是字符串中的第一個字母的情況。

\w也包含_,如果這也不行比你可以定義自己的角色像類或[a-zA-Z]用改性劑使用unicode的東西\p{L}一起u

+0

是的,這完全是'rad':D –

+0

改進後的版本也匹配字符串的開頭:'/(?<=^\ w)|(?<= \ s \ w)/'。 –

+0

@Ferdinand好點,謝謝。 – stema

1

如何:

preg_replace('/(\S) ', '${1}&nbsp;', $mystring); 

\S任何非空白字符相匹配。

+0

是不是這其實更糟糕,沒有按」用這個替代每個罪惡空間?我想在單個字母后替換空格。 –

+0

等一下,你不是說「每一個字母后的每個空間」嗎?這個正則表達式正在做我認爲的,至少對於「每一個字母」的合適解釋......你是指在每個「被空白包圍的單個字母」之後? –

+0

那麼,這是我的錯,我的意思是'每一個字母詞'。抱歉! –