将两个字符串之间的正则表达式php与中间的字符串匹配

将两个字符串之间的正则表达式php与中间的字符串匹配,php,regex,Php,Regex,我想得到一个由一个单词组成的字符串,前后各有一个分隔符单词 我试过了,但没用 $stringData2 = file_get_contents('testtext3.txt'); $regular2=('/(?<=first del)*MAIN WORD(?=last del)*\s'); preg_match_all($regular2, $stringData2, $out, PREG_PATTERN_ORDER);

我想得到一个由一个单词组成的字符串,前后各有一个分隔符单词

我试过了,但没用

$stringData2 = file_get_contents('testtext3.txt');
$regular2=('/(?<=first del)*MAIN WORD(?=last del)*\s');      

preg_match_all($regular2,                          
$stringData2,
$out, PREG_PATTERN_ORDER);
$stringData2=文件获取内容('testtext3.txt');

$regular2=('/(?不需要量词,在末尾添加delimeter,将
\s
放在lookahead内

'/(?<=first del)MAIN WORD(?=last del\s)/'
”/(?此正则表达式

(?<=xx)[^\s]*(?=yy)
但未能在以下方面匹配:

xxhello worldyy

这可能就是您要查找的内容。

如果您希望在匹配中包含分隔符字符串,则不应使用“向前看”、“向后看”或“向后看”。它应该是相当基本的内容,如下面所示

/\s?first del MAIN WORD last del\s?/
如果您确实希望只返回匹配的主单词部分,那么这将起作用

/(?<=\s?first del)MAIN WORD(?=last del\s?)/

/(?你能给我一个例子说明你在testtext3.txt中会有什么吗?testtext3中的文本是一个长文本,有许多单词等于分隔符,所以我必须限制它只从主单词到前后的分隔符这很好,但是一个小例子说明文本文件中会有什么,以及你想要的常规表达式是什么在该实例中返回时,将真正帮助我们为您提供所需的答案。假设没有任何答案已提供帮助。DELI STR text text text text MAIN WORD text text tetx DELIend STR textextextextextexttext DELI STR texttextexttextextextextext DEL STR text text text text text text text text text MAIN WORD text text text text text text texttext tetx DELIMend STR等…仅DEL STR之间的字符串…MAIN WORD…DELIend STR仅包含分隔符字符串我想得到xxhelloy,因为字符串取自长文本,如果我不做任何操作,我会得到第一个分隔符和主单词之间的所有文本。我只想要来自主单词星号的文本ting形成第一个分隔符并以最后一个分隔符结束,在您的评论出现在我的机器上之前仍在编辑。这是energizer bunny regex错误,它一直在继续。打得好,sln。也许可以将空格设置为可选的?即.\s?这样,如果它位于文件的末尾,它仍然会匹配。可以将可选的空格添加进去吗还有lookbehind。@PhilipBennison-我刚修复了他的正则表达式,不想修改它。但是,在lookbehind中可能需要
\s
。添加
\s?
会导致问题。如果可能是EOF,则更适合这样做
(?:\s |$)
。在lookback中,添加
\s?
将使其变长。如果在那里是可选的,则可以是
(?:(?)?
/(?<=\s?first del)MAIN WORD(?=last del\s?)/