脚本宝典收集整理的这篇文章主要介绍了php – 正则表达式:匹配所有行中的子字符串,除非子字符串在注释部分中,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个PHP应用程序,我有一个新的官方域名,现在所有的FAQ都在这里.我脚本中的一些文件包含旧FAQ域的帮助链接,因此我想使用新域替换它们.但是,我想保留链接到旧域的URL,只要它们位于注释或注释块下面(我仍然使用旧域进行自我引用和其他文档).
所以,基本上,我想要实现的是一个正则表达式,它具有以下功能:
>匹配所有行中example.COM的所有匹配项*.
>不匹配整行,只匹配example.com字符串.
>
>如果行以//,/ *或“*”开头,则不匹配该单行中的任何example.com实例(但是,如果注释块在同一行中关闭,则可能会出现问题打开).
我经常写这样的块@L_126_11@:
/* text * blah * blah */
这就是为什么我不想匹配“example.com”,如果它位于//,/ *或“*”之后.
我想它会是这样的:
^(?:(?!//|/\*|\s\*).?).*example\.com
但是这有一个问题:它匹配整行,而不仅仅是“example.com”(这会导致问题,主要是当两个或多个“example.com”字符串在一行中匹配时).
有人可以帮我修复我的正则表达式吗?请注意:它不一定是PHP正则表达式,因为我总是可以使用像grepWin这样的工具来一次本地编辑所有文件.
哦,请告诉我是否有办法以某种方式概括块注释,例如:找到/ *后,在找到* /之前不匹配example.com.那将非常有用.是否有可能实现一般(非语言相关)正则表达式?
$result = PReg_replace( '%example\.com # Match example.com (?! # only if IT\'s not possible to match (?: # the following: (?!/\*) # (unless an opening comment starts First) . # any character )* # any number of times \*/ # followed by a closing comment. ) # End of lookahead %sx','newdomain.com',$subject);
以上是脚本宝典为你收集整理的php – 正则表达式:匹配所有行中的子字符串,除非子字符串在注释部分中全部内容,希望文章能够帮你解决php – 正则表达式:匹配所有行中的子字符串,除非子字符串在注释部分中所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。