【发布时间】:2016-05-10 11:48:26
【问题描述】:
执行regular expression match in PHP using the preg suite,我知道您可以直接在正则表达式中表示条件语句。
我在网上几乎找不到任何文档,所以我求助于Jeffrey E.F. Friedl's Mastering Regular Expressions。
在我看来,/(?(?<=NUM:)\d+|\w+)/ 之类的东西应该匹配一个前面有 NUM: 的数字,否则它应该匹配一个单词。
但由于某些奇怪的原因,它总是返回 true,并且匹配数据对我来说也没有意义。谁能给我解释一下这是怎么回事?
我想做的是这样的:
preg_replace('/creat(?:e|ing)/i', 'make', $input)
but only when '/creat(?:e|ing)/i' is not surrounded by quotes.
实际上,我需要的输入输出序列是:
- 输入:制作一件白衬衫。
输出:做一件白衬衫。
- 输入:“制作一件白衬衫。”
输出:“创建一件白衬衫”
- 输入:你好,创建一些好的代码。
输出:你好,编写一些好的代码。
- 输入:“你好”“制作一些”好的“代码”。
输出: "hello" "make some" good "code."
谢谢大家!
编辑:我想做这样的事情:如果有一个开引号,在这种情况下,在匹配关键字 create 之前确保它有一个闭引号。希望这是有道理的并且是可能的。
【问题讨论】:
-
那么,您使用的正则表达式是什么?仅限
creat(?:e|ing)?但它在任何地方都匹配create。 -
我什至无法开始,因为 if-else 给了我意想不到的结果。
标签: php regex preg-replace preg-match pcre