我可能会使用代码 html标记获得一些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'
我试图找到正则表达式。然后我会得到未经修改的标签的长度并使用php substr 函数,但没有成功:
(<code.+?)(?!.+>.+)$
https://regex101.com/r/dY5tW4/2
什么正则表达式会做什么工作或什么PHP代码? 谢谢
答案 0 :(得分:1)
如果您可以解析该字符串以查找完整的<code ..>
,那么它将是
像这样<code[^>}*>
你所要做的就是将那些不能正确的部分放入负面 先行断言。
(?s)<code(?![^>]*?>).*$
测试https://regex101.com/r/dY5tW4/4
扩展
(?s)
<code
(?! [^>]*? > )
.*
$
要使其具有内容,需要稍作修改。
(?s)<code(?![^>]*?>\s*\S).*$
扩展
(?s)
<code
(?! [^>]*? > \s* \S )
.* $
请记住,这不符合html的任何解析规则,因为它不能
因此,你能做的最好的事情就是在第二节之后得到字符串的剩余部分
比赛。
实际上,它不能在字符串中多次匹配,因为没有
这样做的规则。