在给定字符串的特定位置插入字符


insert character in specific position in a given string

我正在努力学习Regex,这个问题对我来说似乎很难回答我有一个类似的代码

$string = "He is type a document"

$字符串是用户在HTML表单文本区域中输入的,现在我想将其更正为

$correct = "He is typing a document"

代码将扫描整个句子,并在"他是"(或"她是","它是"(后面的单词处停止,然后在单词的最后一个位置添加"ing">

您可以使用以下内容进行匹配:

(?<=(?:he is )|(?:she is )|(?:it is ))('S*)'S

并更换为$1ing

参见DEMO

编辑:要限制单词与ing匹配,请使用以下命令:

(?<=(?:he is )|(?:she is )|(?:it is ))('S*)'S(?<!ing)'b

编辑:要使替换更有意义,请使用以下操作:

(?<=(?:he is )|(?:she is )|(?:it is ))('S+?)[aeiou]?(?<!ing)'b

这将给出以下内容:

type -> typing
eat -> eating (not eaing)
break -> breaking (not breaing)
write -> writing

请参阅更新的演示

^(?:s?he|it) is 'S+'K

你可以用这个。替换为ing。请参阅演示。

https://regex101.com/r/vA0yQ3/1

$re = "/^(?:s?he|it) is ''S+''K/mi"; 
$str = "He is type a document'nshe is type a document'nit is type a document"; 
$subst = "ing"; 
$result = preg_replace($re, $subst, $str);