我试图在我学校的新闻网站(运行WordPress)上使用PHP中的正则表达式。想法是,无论何时有人保存帖子,“Regis”的所有实例(最后没有'Jesuit')都被替换为“Regis Jesuit”。 (我去瑞吉斯耶稣会高中,他们挑剔他们的品牌)。总体而言,这正常工作与以下不区分大小写的正则表达式:匹配不带引号的字符串
/regis(?! jesuit)/i
我将如何修改这个正则表达式,所以如果找到字符串不匹配的“吉斯”或“瑞吉”(单次或双引号) ? (甚至“我也去瑞吉斯高中”)?这里的想法是在必要时对其进行更改,但要将其与人的故事中的直接引用保持一致,这样我们就不会改变人们的报价。
谢谢! Morgan Morgan
您将要遇到的问题是匹配引号对。 “我去了瑞吉斯高中,”最近Regis的研究生John Integer说,“但是我还没有我的瑞吉斯明矾卡。”“要告诉任何正则表达式解析器,案件不在两个引号之间。此外,由于AP样式需要引号来开始段落引用*,但如果后续段落是引用*的延续,则不会结束它,所以确实非常棘手。 – Robusto 2010-07-26 14:13:21
另外,假设所有人都知道或关心正确的引用,或者他们使用* only *单引号或双引号,并且永远不会忘记关闭引号,这太“乐观”了。 *另外:你不想改变“引用”的文字。东西人在文本字段中输入**是被引用的文本,不管他们在帖子中是否引用了其他人。考虑一下。* – Tomalak 2010-07-26 14:19:12
哦,在我忘记之前:假设“里吉斯”永远不会成为别的什么比你的学校是短视的,至少可以说。做一个谷歌搜索“雷吉斯”,并惊讶于它可能意味着多少不同的事情。 – Tomalak 2010-07-26 14:21:58