我正在做一些输出解析,我需要从两个单词之间抓取一大块文本。例如,如果我正在解析文本
"Hi this is an example"
我希望能够指定我的两个词是“Hi”和“example”,我会取回字符串
" this is an "
我知道正则表达式很有用,但我不熟悉它们。有任何想法吗?
你会想要一个看起来像的正则表达式
Hi(.*?)example
我们要捕获()
s中的所有内容
.
匹配任何字符
*
意味着我们想要从 0 到无穷大.
我们在末尾添加 a?
以便我们不贪婪地匹配,否则它将吞噬所有内容,直到文本中的最后一个“示例”,而不是“嗨”之后的第一个“示例”。
编辑:就正则表达式测试人员而言,我喜欢Rubular。它在技术上是特定于红宝石的,但适用于简单的事情。它显示了整个正则表达式匹配和捕获组。这是您的示例:http ://rubular.com/r/c9I4cmJqBx
此正则表达式将匹配两个单词之间的所有内容:
(?<=Hi).*(?=example)
此正则表达式采用“环顾四周”,无需捕获一组然后提取它 -整个匹配是您的目标。
此任务不需要正则表达式。找到两个单词的索引并返回两个索引之间的内容。您必须将第一个单词的长度添加到第一个索引。
var search = 'this is a quick test', first = 'this', second = 'test';
search.substring( search.indexOf(first) + first.length, search.indexOf(second));