正则表达式,在两个关键字之间获取整个字符串

时间:2013-06-07 22:20:14

标签: c++ regex

我正在做一些输出解析,我需要从两个单词之间抓取一大块文本。例如,如果我正在解析文本

"Hi this is an example"

我希望能够指定我的两个单词是“嗨”和“示例”,我会找回字符串

" this is an "

我知道正则表达式很有用,但我对它们并不熟悉。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

你想要一个看起来像

的正则表达式
Hi(.*?)example

我们希望捕获() s

中的所有内容

.匹配任何字符

*表示我们希望从0到无穷.

我们在末尾添加?,以便我们匹配非贪婪,否则它会吞噬所有内容,直到文本中的最后一个“示例”,而不是“Hi”之后的第一个“示例”。 / p>

编辑:就正则表达式测试人员而言,我喜欢Rubular。它具有特定的技术红宝石,但对于简单的事情效果很好。它显示了整个正则表达式匹配和捕获组。以下是您的示例:http://rubular.com/r/c9I4cmJqBx

答案 1 :(得分:2)

这个正则表达式将匹配两个单词之间的所有内容:

(?<=Hi).*(?=example)

这个正则表达式采用“环顾四周”,不需要捕获一个组,然后将其解压缩 - 整个匹配是你的目标。

答案 2 :(得分:1)

此任务不需要正则表达式。找到两个单词的索引并返回两个索引之间的内容。您必须将第一个单词的长度添加到第一个索引。

var search = 'this is a quick test', first = 'this', second = 'test';
search.substring( search.indexOf(first) +  first.length, search.indexOf(second));