2

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

"Hi this is an example"

我希望能够指定我的两个词是“Hi”和“example”,我会取回字符串

" this is an "

我知道正则表达式很有用,但我不熟悉它们。有任何想法吗?

4

3 回答 3

3

你会想要一个看起来像的正则表达式

Hi(.*?)example

我们要捕获()s中的所有内容

.匹配任何字符

*意味着我们想要从 0 到无穷大.

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

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

于 2013-06-07T22:28:11.740 回答
2

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

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

此正则表达式采用“环顾四周”,无需捕获一组然后提取它 -整个匹配是您的目标。

于 2013-06-07T22:28:59.237 回答
1

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

var search = 'this is a quick test', first = 'this', second = 'test';
search.substring( search.indexOf(first) +  first.length, search.indexOf(second));
于 2013-06-07T22:32:14.320 回答