作者renmax (锻翼)
看板PHP
标题[请益] preg_match_all的问题
时间Fri May 18 16:16:00 2012
各位好
我从网页上抓到一堆字串後,要继续做抓字串的动作
这一堆的字串规则如下
.............(前略好几行).......
'''..............(中略好几行)...............
==...........(後略更多行)..............
目的是要抓「中略好几行」这堆字串
而我的php function code如下
function get_str($Wikiquery , $WikiStr)
{
preg_match_all("/[^''']*" .preg_quote($Wikiquery). "[^==]*/u" , $WikiStr
, $results);
return $results[0][1];
}
虽然可以抓到字串,但是在「前略好几行」那边也会有「'''」的符号
所以会抓到前略好几行中不必要的字串
另外,中略好几行的开头一定是「'''」为开头,但却不知道是从第几行开始
请问我该怎麽抓这些字串?
烦麻各位了,谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.129.20.145
※ 编辑: renmax 来自: 140.129.20.145 (05/18 16:55)
1F:推 knuckles:/\n'''(.*?)\n===/s 还有你的[^ ]用法错了 05/18 19:22
2F:→ MOONRAKER:没错~^ 只有不在[ ]中的时候才表示行首。 05/18 22:14
3F:→ renmax:其实 正规表示法 我还在摸索 第一次接触...... 05/18 23:13
4F:→ renmax:刚刚试了一下 return $results[0][1]; 抓不到目标字串 05/18 23:33
5F:→ renmax:要在return $results[0][12]; 才会抓的到 05/18 23:33
6F:→ renmax:抱歉 我弄错了 return $results[0][0];就都可以抓到了 谢谢 05/18 23:37
7F:→ MOONRAKER:还是推荐你方便网站,google搜寻regexr 05/19 12:54
谢谢您的推荐,但是我现在要处理的字串更加复杂
依据K大提供的正规法,将中间好几行抓出来之後,要继续做字串的处理
规则大约如下:
'''......'''............[[...]]......[[..]]......<ref xxxxxx>xxxxxxx</ref>...
......[[File:xxxxxxxxxxx]].......。==
我只要这些字串的「......」的内容(包含逗点和句点等标点符号)
而'''和[[以及]]以及<ref xxxxxx>xxxxxxx</ref>加上[[File:xxxxxxxxxxx]]
还有最後的==这些都是不需要的
我只知道 (?<=^|>)[^><]+?(?=<|$) 可以将<ref xxxxxx></ref>去除掉
但是之间的xxxxxx却无法处理掉,要处理的字串太过复杂
而我昨天才刚接触正规法,只好来求救各位前辈
不好意思麻烦了,谢谢
※ 编辑: renmax 来自: 140.129.20.145 (05/19 16:26)