关于这个正则 应该怎么写呢 o(>﹏<)o... 两个引号之间的内容..

2014-09-05 08:27:41 +08:00
 supman
"../image.aspx?id=此处为随机字符串(asdf7-sfdaa-asfdls)" width="12px"

../im.* 后面的实在木有办法了... 后来在http://deerchao.net/tutorials/regex/regex-1.htm 找了找资料... 发现$是结尾, 双引号为\*

于是 我的正则又改成了../im.*\"$ ...可还是不能只保留双引号之间的内容..

没办法了,还是要麻烦V2的热心肠了, 有什么办法, 用正则只保留第一个双引号之间的内容呢?
3165 次点击
所在节点    问与答
10 条回复
mhycy
2014-09-05 08:35:08 +08:00
正则表达式
#"\.\./image\.aspx\?id=([a-zA-Z0-9-]+)"#
或:#"\.\./image\.aspx\?id=([^"]+)"#
或:#image\.aspx\?id=([^"]+)"#
rrfeng
2014-09-05 08:42:22 +08:00
"(/im[^"]*)"

引号 非引号任意个 引号
其中 非引号任意个 可以添加一些具体的字符提高精度
supman
2014-09-05 08:42:56 +08:00
@mhycy 谢谢你啦! 用的第二种, 非常有效 :)))
mhycy
2014-09-05 08:44:28 +08:00
貌似搞错了。。是引号以内的内容啊
#("\.\./image[^"]+")#
#是边界符
方括号内^是排除
jy01264313
2014-09-05 08:45:34 +08:00
^\"(.*?)(?=\")
用一个零宽断言截断
mhycy
2014-09-05 08:46:31 +08:00
@supman 不谢。。。
但如果是为了提取引号内的内容而不是提取那个随机字串的话需要把圆括号去掉。。。
supman
2014-09-05 09:07:01 +08:00
@rrfeng 这么短短几个字符.... 竟然非常管用... 谢谢啦


@jy01264313 也谢谢你的回复 :)
oott123
2014-09-05 09:55:46 +08:00
我猜楼主在匹配 HTML 的 img 标签。
为何不用 src="(.*?)" 就好……然后取 match[1]
imn1
2014-09-05 15:21:50 +08:00
基础不够好
1.排除字符用[^要排除的字符],显然这里引号是排除字符
2.贪婪与非贪婪
anson0370
2014-09-05 17:26:08 +08:00
如果要匹配的字符串里没有引号的话 那么用懒惰匹配也行 不一定需要[^"]

"(\.\./im.*?)"应该就可以 实际上单就楼主举的例子 "(.*?)" 然后取 match[1] 就好……

如果字符串里会出现 \" 这样的转义引号那可能就要这么搞一下

"(([^"]|\\")*)"

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/131832

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX