正则表达式:从几个html页面中的标签中删除特定的重复单词

时间:2018-01-10 14:03:14

标签: regex window notepad++

我在 

标记下有很多<p class="my_class">的文字
 <p class="my_class">An Extension&nbsp;of Java for Event Correlation. 571 geographical/logical coordinates, or sources. Henceforth,&nbsp;we will use the term&nbsp;events to refer to&nbsp;both the incidents underlying such&nbsp;events as well as to their incarnations&nbsp;and notifications</p>

我想选择此标记并将所有&nbsp;替换为多个html页面中的空白区域。

首先,我选择标记和内容:(?s)<p class="my_class">([^<]*)</p>

然后我尝试将&nbsp;包含在此正则表达式中,以便选择所有&nbsp;

(?s)<p class="my_class">.*?&nbsp;([^<]*)</p>但不起作用。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

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

(?:\G(?!^)|<p\s+class="my_class">)(?:(?!</p>).)*?\K&nbsp;

或者,为了确保我们只在一个节点内部替换HTML:

(?:\G(?!^)|<p\s+class="my_class">)[^<]*?\K&nbsp;

替换为空格。

<强>详情

  • (?:\G(?!^)|<p\s+class="my_class">) - 上一个匹配的结尾(\G(?!^))或<p class="my_class">子字符串(该空格可以是\s引起的任何空格)
  • (?:(?!</p>).)*? - 任何字符(请注意 .匹配换行符选项应该为ON),尽可能少的多次出现,但不会启动{ {1}}序列 - 或 -
  • </p> - [^<]*?以外的任何字符,0 +出现但尽可能少
  • < - 省略目前为止匹配的文字
  • \K - 匹配并使用&nbsp;文字(将替换为空格)

enter image description here