Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 正则表达式,获取两个关键字之间的整个字符串_C++_Regex - Fatal编程技术网

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

C++ 正则表达式,获取两个关键字之间的整个字符串,c++,regex,C++,Regex,我正在做一些输出解析,需要从两个单词之间获取一块文本。例如,如果我正在分析文本 "Hi this is an example" 我希望能够指定我的两个单词是“Hi”和“example”,我将返回字符串 " this is an " 我知道正则表达式很有用,但我不熟悉它们。有什么想法吗?你会想要一个 Hi(.*?)example 我们希望捕获()中的所有内容 匹配任何字符 *表示我们想要从0到无穷大 我们在末尾添加了一个?,这样我们就可以不贪婪地匹配,否则它会吞噬一切,直到文本中的最后一个“

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

"Hi this is an example"
我希望能够指定我的两个单词是“Hi”和“example”,我将返回字符串

" this is an "

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

你会想要一个

Hi(.*?)example
我们希望捕获
()
中的所有内容

匹配任何字符

*
表示我们想要从0到无穷大

我们在末尾添加了一个
,这样我们就可以不贪婪地匹配,否则它会吞噬一切,直到文本中的最后一个“示例”,而不是“Hi”之后的第一个“示例”


编辑:就正则表达式测试人员而言,我喜欢。它在技术上是特定于ruby的,但对于简单的事情来说效果很好。它显示整个正则表达式匹配和捕获组。下面是您的示例:

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

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

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

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

您使用的是什么语言?我建议您使用类似教程的方法学习基本正则表达式语法,并使用类似正则表达式测试仪的方法进行操作。请记住,正则表达式语法在不同的语言/实用程序中会有所不同,因此,即使表达式在某个位置有效(即regexpal)它不总是直接可译到下一个C++。对不起,当一个捕获组最适合这个工作时,我应该提到1*对于无用的查找。这不仅不必要的复杂性和效率低,习惯于使用这样的查找表会导致问题。例如,如果你使用相同的技术来找到在
“foo”bar“baz”
中输入内容,您将获得三个匹配项,而不是两个。*)不完全是,只是说。@Qtax您假设得太多了。您不知道OP是否要求将整个匹配项作为目标字符串。他可能想要替换它,或者他可能需要将正则表达式传递到一个期望正则表达式与整个目标匹配的方法中,等等。我更喜欢避免使用组,因为它们不像无组正则表达式那样干净或通用。所以这里有