免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2970 | 回复: 12
打印 上一主题 下一主题

求教正则表达式的高级替换 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-05-18 12:00 |只看该作者 |倒序浏览
我想将一段字符从文本中查找出来,处理后在放回原来的位置。
高难度啊!!一直没有解决,特向各位大大请教。

把href中间的文字在中部加一个sessionId。希望能处理任意多个href属性。


<html>
  <body>
    1.jsp<br/>
    <a href = "2.jsp?id=3" class="black">Jump1</a><br/>
    <a href="3.jsp?id=434&type=1" >Jump2</a><br/>
    <a href= "4.jsp?id=34&type=1&cat=3">Jump3</a><br/>
    <br/>
  </body>
</html>

替换成

<html>
  <body>
    1.jsp<br/>
    <a href = "2.jsp;jsessionid=69E64F077EDBEEF80BBECA2F79284E38?id=3" class="black">Jump1</a><br/>
    <a href="3.jsp;jsessionid=69E64F077EDBEEF80BBECA2F79284E38?id=434&type=1" >Jump2</a><br/>
    <a href= "4.jsp;jsessionid=69E64F077EDBEEF80BBECA2F79284E38?id=34&type=1&cat=3">Jump3</a><br/>
    <br/>
  </body>
</html>

论坛徽章:
0
2 [报告]
发表于 2004-05-18 12:15 |只看该作者

求教正则表达式的高级替换

没看出有什么规律呀@_@

论坛徽章:
0
3 [报告]
发表于 2004-05-18 12:41 |只看该作者

求教正则表达式的高级替换

就是把.jsp?id=
变成
.jsp;jsessionid=69E64F077EDBEEF80BBECA2F79284E38?id=
这样吧???

不难,跟一般sed替换一样啊

论坛徽章:
0
4 [报告]
发表于 2004-05-18 13:00 |只看该作者

求教正则表达式的高级替换

sed '/href/s/.jsp/.jsp;jsessionid=69E64F077EDBEEF80BBECA2F79284E38/' filename>tempfile
mv tempfile filename

论坛徽章:
0
5 [报告]
发表于 2004-05-18 13:27 |只看该作者

求教正则表达式的高级替换

我没说清楚。只能替换 <a href = "2.jsp?id=3" 引号中的东西。
<a href="2.jsp?id=3">I like jsp</a> "I like jsp" 不能被替换。

也就是说要现在全文中找到href指向的内容,然后再替换。

论坛徽章:
0
6 [报告]
发表于 2004-05-18 13:44 |只看该作者

求教正则表达式的高级替换

sed '/href/s/\(<a href="\)*.jsp\(?id\)/\1.jsp;sessionid=69E64F077EDBEEF80BBECA2F79284E38\2/'

论坛徽章:
0
7 [报告]
发表于 2004-05-18 15:29 |只看该作者

求教正则表达式的高级替换

是这样的。
href指向的内容是动态的,其实是一个标准的URL.
比如http://bbs.chinaunix.net/forum/viewtopic.jsp?p=2170103#2170103.它的内容是随机的。规律是放在<a href="">的引号中间。
这个替换是要在这个URL的“.jsp”和“?”中间插入一个字符串(;sessionid=69E64F077EDBEEF80BBECA2F79284E3变换后的其他部分都不变。


<a href="http://bbs.chinaunix.net/forum/viewtopic.jsp?p=2170103#2170103">
就应该替换成
<a href="http://bbs.chinaunix.net/forum/viewtopic.jsp;sessionid=69E64F077EDBEEF80BBECA2F79284E38?p=2170103#2170103">

在一次替换的页面中有很多个这样的链接,各个链接URL文本都不相同,但是都要进行这样的替换,附加的字符串是相同的。

论坛徽章:
0
8 [报告]
发表于 2004-05-18 15:57 |只看该作者

求教正则表达式的高级替换

Maybe u can use apache's "rewrite" directive first,
then do the exchange job in jsp.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2004-05-18 17:10 |只看该作者

求教正则表达式的高级替换

  1. # sed 's/\.jsp\?/.jsp;jsessionid=69E64F077EDBEEF80BBECA2F79284E38?/' yourfile
复制代码

论坛徽章:
0
10 [报告]
发表于 2004-05-18 17:46 |只看该作者

求教正则表达式的高级替换

ports:我一直想让apache自动作。我要加的字符串就是用户浏览的sessionId。但是问题1:我没找到这个重写规则怎么写。2:这个字符串是tomcat的sessionId,我不知道怎么传给apache。

admirer版主大人:你说的那段代码把文件中的所有.jsp?都替换了。而不是只替换href="..."引号中的。

我现在想找这么一个正则表达式,然后放到程序中动态替换。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP