一个正则问题, 如何抽取时不包含回车换行符号

dubiousway 2009-01-07 10:30:42
有一段文字

begin
xxxxxxxxxxxx
end
yyyyyyyyyyyyy
yy....
begin
xxxxxxx
end
...


想抽出begin 和 end 中间的 xxxx 部分,但不包括begin后面的回车换行,和end前面的回车换行

谢谢
...全文
840 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
an9ryfr09 2009-01-07
  • 打赏
  • 举报
回复
回车换行用\r\n,对于一切空白字符,包括制表符,垂直制表符,空格等。\s都可以表示
程序猿之殇 2009-01-07
  • 打赏
  • 举报
回复
哪这个正则基本上没有办法写了.
xxxxx内容里面可能有还会用begin和end呢.

首先你要总结出字符串的规律来,要不然何谈正则.
hqaht 2009-01-07
  • 打赏
  • 举报
回复

function GetInformation($content){

$tmpArrayPattern[0] = "/\s+/";
$tmpArrayPattern[1] = "/\t/";
$tmpArrayPattern[2] = "/\n/";
$tmpArrayPattern[3] = "/\r/";


$tmpArrayReplace[0] = "";
$tmpArrayReplace[1] = "<tab>";
$tmpArrayReplace[2] = "<newLine>";
$tmpArrayReplace[3] = "<return>";
ksort($tmpArrayPattern);
ksort($tmpArrayReplace);
$buffer = preg_replace($tmpArrayPattern,$tmpArrayReplace,$content);
return $buffer;

}


给你提供一个我自己写的函数吧
可以先把内容当中的回车啊换行啊空格啊什么的都剔除掉,然后在进行正则匹配
dubiousway 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jakey9826 的回复:]
PHP code
$str = "begin
xxxxxxxxxxxx
end
yyyyyyyyyyyyy
yy....
begin
xxxxxxx
end";

preg_match_all("/begin\s+([^\s]+)\s+end/i", $str, $matches);
print_r($matches);
[/Quote]

([^\s]+)
如果xxxx 中包含回车换行,或者空格制表,怎么办?
最后面为什么用 /i ?
程序猿之殇 2009-01-07
  • 打赏
  • 举报
回复

$str = "begin
xxxxxxxxxxxx
end
yyyyyyyyyyyyy
yy....
begin
xxxxxxx
end";

preg_match_all("/begin\s+([^\s]+)\s+end/i", $str, $matches);
print_r($matches);

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧