2011-05-21 91 views
1

我正在尝试使用正则表达式搜索2个整个单词之间的内容。例如:正则表达式 - 全局搜索2个整词之间

所有的女孩去 镇的商场。

在上面的字符串我想找到这个词allto之间的内容:

(?<=all).*?(?=to)/g 

但是,它的发现两场比赛,因为表达不指示全字之间搜索:

" the girls went " //between all and to 
" in " //between m(all) and (to)wn 

我曾想过要加空格的表达式,像这样:

(?<= all).*?(?= to)/g 

但这不会在上面的字符串中工作,因为all是句子的第一个单词。

我该如何编写表达式,以便它能够在2个整个单词之间找到所有适当的内容,而不会出现如示例中所示的部分单词匹配?

回答

2

添加字边界

(?<=\ball\b).*?(?=\bto\b) 

\ b是没有宽度的字边界。它匹配一个单词的开始或结尾(当然,正则表达式定义)

+0

“\ b”匹配单词字符(0-9,AZ,az和下划线)和任何非单词字符“ – 2011-05-21 02:47:48

+0

优秀!谢谢Sylverdrag! – TheDarkIn1978 2011-05-21 02:51:21

+0

还有一个问题:假设我想要返回的内容包含除空格之外的所有内容,因此,而不是“女孩去”我会得到“thegirlswent”。除了空格之外,我如何匹配所有(。*?)? – TheDarkIn1978 2011-05-21 05:04:00

相关问题