我找到了一些部分帮助,但似乎无法完全完成我所需要的。我需要能够执行以下操作:
我需要一个正则表达式来用匹配任何表达式替换两个长于 3 个字符的单词之间的任何 1 到 3 个字符的单词:
例如:
walk to the beach ==> walk(.*)beach
如果 1 到 3 个字符的单词前面没有超过 3 个字符的单词,那么我想将该 1 到 3 个字母的单词翻译成'<word> ?'
例如:
on the beach ==> on ?the ?beach
规则越简单越好(当然,如果有更复杂的替代版本,性能更高,那么我会采用它,并且我最终预计最终会大量使用)。
这将在最有可能与preg_replace
. 因此,如果你能把它放在那个上下文中,那就更好了!
到目前为止,我得到了以下信息:
$string = preg_replace('/\s+/', '(.*)', $string);
$string = preg_replace('/\b(\w{1,3})(\.*)\b/', '${1} ?', $string);
但这会导致:
walk to the beach ==> 'walk(.*)to ?beach'
这不是我想要的。'on the beach'
似乎翻译正确。