2012-03-23 132 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+)+