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”之前加上前缀。是否可以使用正则表达式来实现这一点?