作者renmax (锻翼)
看板PHP
标题[请益] preg_replace的问题
时间Tue May 29 21:36:10 2012
各位好
在很乱的字串中,想抓出我所需要的字串
http://regexr.com?313h6
尝试上面网址的方式後,我写了一个function
function page_replace_str($WikiStr1)
{
$results = preg_replace("/(?<=^|>)[^>(.*?)<]+?(?=<|$)/" , "" , $WikiStr1);
return $results;
}
// $WikiStr1是要处理的字串
却无法把字串用空白给取代掉
请问,是哪边出了问题吗?
先谢谢各位的解答了,谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.129.20.145
1F:→ MOONRAKER:php pcre的[^...]不能这样用吧 05/29 22:50
2F:→ gpmm:你要不要把 input 和你期望的 output 列一下? o_Oa" 05/29 23:31
input的规则大约如下:
'''......'''............[[...]]......[[..]]......<ref xxxxxx>xxxxxxx</ref>...
......[[File:xxxxxxxxxxx]].......。==
// 会有好几个<ref>和[[File:]]
output是希望只要有............这些字串就好(包含逗点和句点等标点符号)
而'''和[[以及]]以及<ref xxxxxx>xxxxxxx</ref>加上[[File:xxxxxxxxxxx]]
还有最後的==这些都是不需要的
因为要处理的字串太复杂,才想用replace的方式把不需要的字串用空白代替
不知道能不能用match的方式一次搞定就是了
麻烦了,谢谢
3F:→ renmax:我对正规表示法很不熟......只好照着RegExr上弄 05/29 23:32
※ 编辑: renmax 来自: 140.129.38.219 (05/29 23:38)
4F:→ MOONRAKER:我有写出跟你一样效果的了 可是你真的是要删掉html tag 05/29 23:38
5F:→ MOONRAKER:中间的东东吗… 05/29 23:40
6F:→ renmax:原文的问题的想法是想说一步一步把不需要的字串replace掉 05/29 23:42
7F:→ renmax:不过g大问input & output 就把实际想抓的字串打出来 05/29 23:44
8F:→ renmax:所以 实际上想要的字串 就是「......」这些字 而不是xxxxxx 05/29 23:44
9F:→ renmax:的确是不需要TAG中的字串 也就是上面说的XXX这些 05/29 23:46
※ 编辑: renmax 来自: 140.129.38.219 (05/29 23:48)
10F:→ MOONRAKER:把中间的[...]换成[^<]。 05/30 02:43
11F:→ renmax:正规化改成 /(?<=^|>)[^<]+?(?=<|$)/ 这样吗@@? 05/30 11:48
12F:→ renmax:尝试了一下 一样抓不出来 05/30 11:49
13F:→ MOONRAKER:/(?<=^|>)[^<]+(?=<\/|$)/ 05/30 12:04
14F:→ renmax:还是不行耶>"< 什麽字串也没显示出来......空白一片 05/30 12:17
15F:→ gpmm:还是看不懂 XDDD 05/30 12:36
16F:→ gpmm:我觉得你可以做一个「真实的」假资料 txt 档,看是丢到 05/30 12:36
17F:→ gpmm:dropbox 或哪里,板友直接拉下来测比较快,不然你的 input 05/30 12:37
18F:→ gpmm:重复性那边我看的有点雾煞煞 o_O 05/30 12:37
21F:→ renmax:上面是其中两个input档 05/30 12:51