2012-03-23 127 views
1

如何在連字符前後找到空格? 即「這是我的複姓字範例測試」正則表達式:在連字符前後找到空格

我需要之間的空間:「我連字符,」和「字複姓字如」

+0

你準備好犧牲像_Ctrl-Alt- Del_或_politico-military_?我的意思是,你認爲所有連字都至少有一個連字符的連字符,沒有其他條件? – 2012-03-23 17:58:45

+0

爲什麼 - 你想選擇連字符?如果沒有,是什麼語言 - 支持前視/後視? – Aprillion 2012-03-23 18:00:46

+0

你想做什麼,爲什麼?你爲什麼不匹配'(\ s *)(你的詞 - 這裏)(\ s *)',然後看看組1和3是否具有正長度?沒有需要的lookarounds。 – tchrist 2012-03-23 22:21:15

回答

2

您可以使用lookahead and lookbehind

的空間之前:

空間後
\s(?=([^\s]+-[^\s]+)) 

(?<=([^\s]+-[^\s]+))\s 
+0

+1但它只適用於.net,因爲所有其他人都不支持無限長的lookbehind。 – stema 2012-03-23 18:05:15

+0

@stema你說得對,.NET是我最近一直使用的「正則表達式」。我不確定Javascript或Java是否提供了類似的功能 - 我已經超過了這些好幾年了,但我想不是。 – dasblinkenlight 2012-03-23 18:08:37

+0

請參閱http://www.regular-expressions.info/javascript.html如果你想知道JavaScript不支持lookbehind ... – Aprillion 2012-03-23 18:11:02

1

的情況下,你只是想獲得複姓字本身,取得了全場比賽(如捕獲組0 )與這個正則表達式:

\w+(?:-\w+)+