Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
Regex 如何使用lookback或lookahead并替换匹配的字符串?_Regex_Lookbehind - Fatal编程技术网

Regex 如何使用lookback或lookahead并替换匹配的字符串?

Regex 如何使用lookback或lookahead并替换匹配的字符串?,regex,lookbehind,Regex,Lookbehind,我又被一个正则表达式卡住了 样本输入: project description 我想写正则表达式。如果找到“描述”一词,且其前面有“项目”一词,则在“项目描述”之前加上“” 预期产出: <project>project description 项目描述 我编写了以下Regex,n替换字符串,但它不起作用: 正则表达式:((?我不明白为什么要对此使用lookback-您可以执行以下操作: /project description/ -> <project>$

我又被一个正则表达式卡住了

样本输入:

project description
我想写正则表达式。如果找到“描述”一词,且其前面有“项目”一词,则在“项目描述”之前加上“”

预期产出:

<project>project description
项目描述
我编写了以下Regex,n替换字符串,但它不起作用:
正则表达式:
((?我不明白为什么要对此使用lookback-您可以执行以下操作:

/project description/  ->  <project>$0
/project description/->$0
在PHP中,这将是

echo preg_replace('/project description/', '<project>$0', $str);
echo preg_替换(“/project description/”、“$0”和$str);

我不明白您为什么要对此使用lookback-您可以这样做:

/project description/  ->  <project>$0
/project description/->$0
在PHP中,这将是

echo preg_replace('/project description/', '<project>$0', $str);
echo preg_替换(“/project description/”、“$0”和$str);
编辑答案:

这似乎不适合“后视”。为什么不把整个东西替换掉,像这样:

s/(project|other|word) description/<project>$1 description/
s/(项目|其他|单词)描述/$1描述/
这将在
项目
其他
、或
单词
前面加上
说明
,如果后面加上
说明

编辑的答案:

这似乎不适合“后视”。为什么不把整个东西替换掉,像这样:

s/(project|other|word) description/<project>$1 description/
s/(项目|其他|单词)描述/$1描述/

这将在
项目
其他
、或
单词
之前添加单词
,如果后面跟着
说明

扩展Greg的正则表达式以匹配新添加的情况:

/Details\sof\sproject|project(\sdescription|s\sundertaken|\(s\)\ssummary)/

//replace all the matches with

<project>$0
/Details\sof\sproject项目(\s说明\s\sundertaken(s\)\s概述)/
//将所有匹配项替换为
$0
以后可以使用
|
将新案例添加到此正则表达式


编辑:回答
如果“y”在“x”之后,则在“xy”之前加上前缀。

/x\s\y/
替换为
$0


这将为所有出现的x-space-y

扩展Greg的正则表达式以匹配新添加的情况做好准备:

/Details\sof\sproject|project(\sdescription|s\sundertaken|\(s\)\ssummary)/

//replace all the matches with

<project>$0
/Details\sof\sproject项目(\s说明\s\sundertaken(s\)\s概述)/
//将所有匹配项替换为
$0
以后可以使用
|
将新案例添加到此正则表达式


编辑:回答
如果“y”在“x”之后,则在“xy”之前加上前缀。

/x\s\y/
替换为
$0


这将为所有出现的x-space-y提供

嗨,格雷格,我给出的文本只是一个示例文本。实际上,文本可能是以下任何形式:1)项目详情或2)项目摘要或3)项目或4)承担的项目。对于以上所有内容,我想先介绍一下这些词。嗨,格雷格,我所讨论的文本只是一个示例文本。实际上,文本可以是以下任何一种形式:1)项目细节或2)项目摘要或3)项目或4)所承担的项目。对于以上所有的内容,我想先介绍一下这些词。实际上,我所讨论的文本只是一个示例文本。实际上,文本可以是以下任何一种形式:1)项目细节或2)项目摘要或3)项目或4)所承担的项目。对于以上所有内容,我想在这些文字前加上前缀。编辑问题并添加这些条件。@Amarghosh,不可能提供文件中出现的所有可能的文本,因为即使我也不知道以后会发生什么。为了使问题更一般、更清楚,我将用另一种方式来表示,如果“y”在“x”之后,那么在“xy”之前加上前缀。有没有可能使用正则表达式来实现这一点?实际上,我给出的文本只是一个示例文本。实际上,文本可以是以下任何一种形式:1)项目细节或2)项目摘要或3)项目或4)所承担的项目。对于以上所有内容,我想在这些文字前加上前缀。编辑问题并添加这些条件。@Amarghosh,不可能提供文件中出现的所有可能的文本,因为即使我也不知道以后会发生什么。为了使问题更一般、更清楚,我将用另一种方式来表示,如果“y”在“x”之后,那么在“xy”之前加上前缀。是否可以使用正则表达式来实现这一点?