首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex将"aaa.bbb.ccc“替换为"aaa/bbb/ccc.htm”

Regex将"aaa.bbb.ccc“替换为"aaa/bbb/ccc.htm”
EN

Stack Overflow用户
提问于 2012-05-19 22:18:51
回答 1查看 314关注 0票数 0

原文:

代码语言:javascript
复制
<tag keywords="testpage.page11" index="0">Good</tag>

目标文本:

代码语言:javascript
复制
<a href="testpage/page11.htm">Good</a>  

如何编写正则表达式?

到目前为止,我所拥有的:

匹配表达式:<tag keywords=\"(.+?)\" index="\d+">(.*?)</tag>

替换表达式:<a href="\1.htm">\2</a>

但问题是,我如何才能将"testpage.page11"替换为"testpage/page11.htm"

我应该如何更新我的表达式?

"aaa.bbb.ccc"部分也可以是"abc.asd.dff.sssdf.sdfafda""a.b",项的长度或项的数量不固定。

另一件事是我必须在一个正则表达式中完成所有的替换操作。

EN

回答 1

Stack Overflow用户

发布于 2012-05-19 22:31:44

你要匹配的Rexex是这样的:

代码语言:javascript
复制
/<tag keywords="([^"]+)" index="\d+">([^<]+)</tag>/

这显然不能在单个替换中替换,但您可以使用像preg_replace_callback这样的函数在单个函数调用中完成此操作。

这里我提供了一段PHP代码来替换您的原始文本:

代码语言:javascript
复制
$str = '<tag keywords="foo.bar.testpage.page11" index="0">Good</tag>';
$link = preg_replace_callback('#<tag keywords="([^"]+)" index="\d+">([^<]+)</tag>#i',
  create_function('$m',
    'return "<a href=\"" . str_replace(".", "/", $m[1]) . ".htm\">".$m[2]."</a>";'),
           $str);
echo $link . "\n";

输出

代码语言:javascript
复制
<a href="foo/bar/testpage/page11.htm">Good</a>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10665947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档