删除属性内的标签

时间:2016-09-30 02:23:31

标签: php regex dom

我将此字符串传递给Text_Diff ...

b'\x00\x00\x00\x020TRCK\x00\x00\x00\x06\x00\x00\x033936\x00TDEN\x00\x00\x00\x15\x00\x00\x032016-09-30T02:01:11\x00TDTG\x00\x00\x00\x15\x00\x00\x032016-09-30T02:01:18\x00TOFN\x00\x00\x00\x1a\x00\x00\x03index-0000003936-tI2q.ts\x00TSSE\x00\x00\x00\x15\x00\x00\x03libavtwitch: 730c86\x00TXXX\x00\x00\x01\x15\x00\x00\x03segmentmetadata\x00{"broadc_s":1,"cmd":"ld_lat_data","ingest_r":2,"ingest_s":3,"stream_offset":15624,"transc_r":1475200871542,"transc_s":1475200878899}\xbd\x00\x00\x00\x01\xce\x8cM\x9d\x10\x8e%\xe9\xfe'

只有两种可能的标签:del和ins。如果它们不在标签内,我不会删除这些标签。但是当它们属于内部属性时需要删除它们。

1 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式来搜索:

(?<=style=)([\w\W]+)(?:<ins>|<del>)([\w\W\s]+)(?:<\/ins>|<\/del>)([\w\W]*)(?=">)

属性的值是与后向链接匹配的文本:

([\w\W]+) == $1

([\w\W\s]+) == $2

([\w\W]*) == $3

然后,此组合将为您提供属性所需的值:

$1$2$3

对于此输入字符串:

<div class="class1" style="display:block;">Some Text<del> Orig</del></div>

您将得到结果:

<div class="class1" style="display:block;">Some Text<del> Orig</del></div>

对于此输入字符串:

<div class="class1" style="<ins>color:#FFF;</ins>;display:block;">Some Text</div>

您将得到结果:

<div class="class1" style="color:#FFF;;display:block;">Some Text</div>

对于此输入字符串:

<div class="class1" style=";display:block;<ins>color:#FFF;</ins>">Some Text</div>

您将得到结果:

<div class="class1" style=";display:block;color:#FFF;">Some Text</div>

在此处查看演示:https://regex101.com/r/3XKv5s/1

对于任何属性,不仅style

(?<=[a-zA-Z]=")([\w\W]*)(?:<ins>|<del>)([\w\W\s]*)(?:<\/ins>|<\/del>)([\w\W]*)(?=">)

在此处查看演示:https://regex101.com/r/3XKv5s/2