我可能会得到一些带有codehtml标记的html代码字符串。字符串将被剪切以获得它们的摘录。破坏只能发生在空格上。所以我可能会得到这样一个字符串:
'abc <code asdfas = "fasd fdsa">Hello</code> ab <code asdfas = "fasd fdsa">Lorem ipsum'
'abc <code asdfas = "fasd fdsa">Hello</code> ab <code asdfas = "fasd fdsa">a'
'abc <code asdfas = "fasd fdsa">Hello</code> ab <code asdfas = "fasd fdsa">'
'abc <code asdfas = "fasd fdsa">Hello</code> ab <code asdfas = "fasd'
'abc <code asdfas = "fasd fdsa">Hello</code> ab <code asdfas'
'abc <code asdfas = "fasd fdsa">Hello</code> ab <code'
'abc <code asdfas = "fasd fdsa">Hello</code> ab'
代码未完成或正在完成但后面没有任何内容的打开标记应被删除。
因此,在示例中,第一个、第二个和最后一个字符串必须保持不变。从第三个字符串到第四个字符串,必须删除开头的代码标记。
所以字符串集的结果应该是这样的:
'abc <code asdfas = "fasd fdsa">Hello</code> ab <code asdfas = "fasd fdsa">Lorem ipsum'
'abc <code asdfas = "fasd fdsa">Hello</code> ab <code asdfas = "fasd fdsa">a'
'abc <code asdfas = "fasd fdsa">Hello</code> ab '
'abc <code asdfas = "fasd fdsa">Hello</code> ab '
'abc <code asdfas = "fasd fdsa">Hello</code> ab '
'abc <code asdfas = "fasd fdsa">Hello</code> ab '
'abc <code asdfas = "fasd fdsa">Hello</code> ab'
我试图找到regex。然后,我会得到未删除标记的长度,并使用phpsubstr函数,但没有成功:
(<code.+?)(?!.+>.+)$
https://regex101.com/r/dY5tW4/2
什么regex可以完成这项工作,或者什么php代码?感谢
如果您可以解析该字符串以查找完整的<code ..>
,那么它将是
像这个<code[^>}*>
你所要做的就是把不正确的部分变成负数
前瞻性断言。
(?s)<code(?![^>]*?>).*$
测试https://regex101.com/r/dY5tW4/4
扩展
(?s)
<code
(?! [^>]*? > )
.*
$
为了让它有内容,需要稍微修改一下。
(?s)<code(?![^>]*?>'s*'S).*$
扩展
(?s)
<code
(?! [^>]*? > 's* 'S )
.* $
记住,这不遵循任何html解析规则,因为它不能
因此,您能做的最好的事情就是获取
之后字符串的剩余部分一场比赛
事实上,它不能在字符串中多次匹配,因为没有
这样做的规则。