我正在做一些输出解析,我需要从两个单词之间抓取一大块文本。例如,如果我正在解析文本
"Hi this is an example"
我希望能够指定我的两个单词是“嗨”和“示例”,我会找回字符串
" this is an "
我知道正则表达式很有用,但我对它们并不熟悉。有什么想法吗?
答案 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));