我再遇到一个RegEx。
示例输入:
project description
我想写RegEx。如果找到单词“description”并且其前面带有单词“project”,则在“< project>”之前添加“project description”。
预期产出:
<project>project description
我写了以下Regex,n替换字符串,但它不起作用:
正则表达式:((?<=project) description)
和替换字符串:<project_description>$0
使用当前正则表达式和替换字符串即可获得以下输出:
project<project> description
有人可以提出建议吗?
**
编辑问题
** 好吧,我觉得我不太清楚告诉别人我想要什么。
为了使问题更通用和更清晰,我将以另一种方式提出。
如果“y”出现在“x”之后,则将<tag>
添加到xy。
是否可以使用正则表达式执行此操作?
答案 0 :(得分:3)
我不明白你为什么要使用lookbehind - 你可以这样做:
/project description/ -> <project>$0
在PHP中,这将是
echo preg_replace('/project description/', '<project>$0', $str);
答案 1 :(得分:2)
扩展Greg的正则表达式以匹配新添加的案例:
/Details\sof\sproject|project(\sdescription|s\sundertaken|\(s\)\ssummary)/
//replace all the matches with
<project>$0
您可以稍后使用|
向此正则表达式添加新案例。
编辑:回答If "y" comes after "x", then prepend <tag> to xy.
将
/x\s\y/
替换为<tag>$0
这将为所有出现的x-space-y
预先<tag>
答案 2 :(得分:1)
编辑回答:
这似乎不适合外观。你为什么不直接替换整个事情:
s/(project|other|word) description/<project>$1 description/
如果后跟<project>
,则会在project
,other
或word
之前添加description
字。