我的正则表达式格式无法正常工作

时间:2015-08-11 11:43:46

标签: html regex

我正在尝试编写正则表达式以选择<del></del>标记及其前面的文字,但start <del>标记或end </del>标记旁边没有空格。

在开始标记之前没有空格,或者在结束标记之后没有空格必须选择。无需检查任何开始或结束标记之间必须没有空格的条件。任何一个标签也必须选择。

为此,我写了以下正则表达式

 ([^\s]+)(\<del)(.*?)(\<\/del\>)([^\s]+)|([^\s]+)(\<del)(.*?)(\<\/del\>)|(\<del)(.*?)(\<\/del\>)([^\s]+)

以下链接https://regex101.com/r/mD8zF7/2

中的文字正常运行

但是当我通过更改文本进行交叉检查时,如下所示。它提供了错误的输出https://regex101.com/r/mD8zF7/4

我应该在正则表达式中进行哪些修改?或者我的要求是什么样的正确的正则表达式格式。

请帮帮我。谢谢!!

1 个答案:

答案 0 :(得分:1)

(\w+)?<del(.*?)<\/del>\s*(\w+)|(\w+)<del(.*?)<\/del>\s*(\w+)?

                      ^^                             ^^

space导致问题,因为.*?正在扩展,直到找到非空格词。看这个演示:

https://regex101.com/r/mD8zF7/8

.*?后你的正则表达式正在寻找\w+但是在你的新例子中space之前有一个\w+。所以它匹配到\w+没有空间。