迷惑不解的preg_replace

sstower 2011-06-09 03:58:40
我看到这样一个例子:

$_response_body = preg_replace('#(<\s*title[^>]*>)(.*?)(<\s*/title[^>]*>)#is', '$1$3', $_response_body);

迷惑不解的是#字符,#is 在这里的作用是什么,下文还有#si,有没有人告知,感谢!
...全文
182 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tlpower 2011-06-17
  • 打赏
  • 举报
回复
“#”号是在你此正则表达式中的“定界符”,表示这中间是你的正则表达示,而不是普通字符

正则定符不是只有"/",而是任何不是字母、数字或反斜线(\)的字符都可以作为定界符。如果作为定界符的字符必须被用在表达式本身中,则需要用反斜线转义。自php4.0.4起,也可以使用Perl风格的 (),{},[] 和 <> 匹配定界符。

如下面的写法都是合法的:

$str ='abc123def5g';
preg_match_all('/\d+/i', $str, $arr1);
preg_match_all('|\d+|i', $str, $arr2);
preg_match_all('(\d+)i', $str, $arr3);
preg_match_all('{\d+}i', $str, $arr4);
preg_match_all('[\d+]i', $str, $arr5);
preg_match_all('<\d+>i', $str, $arr6);


------------------

后面的“i”和“s”是“正则模式匹配符”。
i:PCRE_CASELESS 如果设定此修正符,模式中的字符将同时匹配大小写字母。
s:PCRE_DOTALL 如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。这和 Perl 的 /s 修正符是等效的。排除字符类例如 [^a] 总是匹配换行符的,无论是否设定了此修正符。

如果还想了解其它关于“模式匹配符”的知识的话,可以看下我的博客
http://hi.baidu.com/tianliao1988/blog/item/ddc2ba1839909e6edbb4bd56.html
可能对你有用。。
一起混吧 2011-06-17
  • 打赏
  • 举报
回复
S: 如果一个模式将被使用多次, 使用长些时间分析他来来提高匹配的速度. 如果使用这个修饰符,则进行额外的分析. 目前, 研究模式仅用于非锚模式,没有一个固定的开始字符.

//这个不是经常用。不用太在意。
sstower 2011-06-17
  • 打赏
  • 举报
回复
举例:
$_response_body = preg_match_all('#(<(.*?)#is', $_response_body,$matches);

如果:$_response_body = "123456\n789";
加s 匹配结果是 123456\n789
不加s 匹配结果是 123456

但对于S是怎么回事呢?



sstower 2011-06-17
  • 打赏
  • 举报
回复
在网上找了一下,没有找到S的解释,
S表示不换行,这个不太明白
s 将字符串视为单行。回车符作为普通字符。这个能理解
ispax 2011-06-12
  • 打赏
  • 举报
回复
#为定界符
i与s正则字符,i表示不分大小写
S表示不换行
kaifadi 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jordan102 的回复:]

i是不区分大小写。
s 将字符串视为单行。回车符作为普通字符。
[/Quote]
s的解释不对吧!

应该是/s的模式中的圆点元字符(.)匹配所有的字符,包括换行符。如果没有s参数,.不能匹配/n
一起混吧 2011-06-09
  • 打赏
  • 举报
回复
i是不区分大小写。
s 将字符串视为单行。回车符作为普通字符。
床上等您 2011-06-09
  • 打赏
  • 举报
回复
这个你需要 google 或者查阅更加多的资料
sstower 2011-06-09
  • 打赏
  • 举报
回复
后面的 is 是这个正则的一些参数等
----------------------------
这些参数有什么作用,最好举例说明
床上等您 2011-06-09
  • 打赏
  • 举报
回复
两头的 # 是定界符,你可以使用 / @ 等代替。

#is 里的#是定界的结果,后面的 is 是这个正则的一些参数等
内容概要:本文提出了一种基于概率调控的风光联合出力极端场景生成方法,旨在有效应对风能与太阳能发电固有的强不确定性问题。该方法融合概率统计理论与优化控制策略,通过对历史风光出力数据进行建模,采用概率分布调控技术生成具有高代表性的极端场景集,从而为电力系统在极端天气条件下的运行分析提供可靠的数据支撑。文中详细阐述了模型的构建原理、核心算法设计及完整的场景生成流程,并利用实际案例验证了所提方法在提升场景多样性和极端性方面的有效性与实用性,显著增强了电力系统在高比例可再生能源接入背景下的风险评估与决策能力。; 适合人群:具备一定电力系统基础知识和Python编程能力,从事新能源发电、电力系统规划与运行、不确定性建模、场景生成及风险评估等相关领域的研究人员和工程技术人员。; 使用场景及目标:①用于电力系统中风光出力不确定性建模与极端场景的高效模拟;②支撑含高比例可再生能源电网的可靠性评估、安全校核、调度优化与风险防控研究;③为电力系统规划、应急管理和极端事件应对提供科学依据和技术工具。; 阅读建议:建议读者结合文中提供的Python代码进行动手实践,深入理解概率调控机制与场景生成算法的实现细节,掌握参数调整对场景特性的影响规律,并可进一步将该方法拓展应用于其他不确定性电源或多能源耦合系统的场景分析中。

21,889

社区成员

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

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