从部分匹配整个单词

时间:2017-08-07 07:47:13

标签: regex

这是否可以匹配被标签撕裂的单词? 例如:

Mi<span class="_ _1"></span>ni<span class="_ _1"></span>stry

结果应该是 - 部,这意味着我需要突出显示被

撕裂的部门一词

1 个答案:

答案 0 :(得分:0)

你究竟是如何阅读输入的?实际上,您可以通过读取输入并使用空字符串替换所有标记及其内容来提取不符合标记的符号,并将结果保存在单独的变量中。像这样非常简单的事情应该这样做:

<[^<]*?>

此模式匹配以“&lt;”开头的所有序列,以“&gt;”结尾并且不包含中间的嵌套开始和结束标记。这可确保文本可以包含“&gt;”和“&lt;”标志,与标签无关,不会在匹配中被替换。

示例:

Mi<span class="_ _1"></span>ni<span class="_ _1"></span>stry

将返回Ministry

Mi<<span class="_ _1"></span>ni<span class="_ _1"></span>stry

请注意附加的“&lt;”在“Mi”之后。这将返回Mi<nistry

但是,这在以下情况下不起作用:

Height<5 and Width> 6

此处,<5 and Width>部分将作为标记匹配,并将被替换。为了限制此问题,考虑到在需要忽略的文本之间只有 span元素,您可以使用以下模式:

<[/]?span[^<]*?>

此外,如果您确定 span 元素仅包含属性,则可以进一步增强逻辑:

<[/]?span(\s*class\s*=\s*".*?"\s*)*>

对于Height<5 and Width> 6情况,由于没有包含正确的 span 元素,因此不会替换任何内容。但是,Height<span class="_and_Width>"> 6会在替换后产生Height 6,因此您应该保存。