我正在尝试编写正则表达式以选择<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
我应该在正则表达式中进行哪些修改?或者我的要求是什么样的正确的正则表达式格式。
请帮帮我。谢谢!!
答案 0 :(得分:1)
(\w+)?<del(.*?)<\/del>\s*(\w+)|(\w+)<del(.*?)<\/del>\s*(\w+)?
^^ ^^
space
导致问题,因为.*?
正在扩展,直到找到非空格词。看这个演示:
https://regex101.com/r/mD8zF7/8
.*?
后你的正则表达式正在寻找\w+
但是在你的新例子中space
之前有一个\w+
。所以它匹配到\w+
没有空间。