使用空锚匹配所有链接?

时间:2014-07-22 08:31:59

标签: html regex

我要做的是用#元素替换所有空'href'或其值为button的锚元素。在进程中如果他们有一个类我想要向它添加额外的类btn btn-link并保留所有其他属性。我试图在Nodepad ++中这样做。

这是我的正则表达式<a (?=.*?href="#")(?:.*?class="(.*?)")?(.*?)>(.*)</a>

<a href="#" data-ng-click="openDeleteDialog(futureTask,$event)" title="@ResourceDictionary.CommonDeleteLabel"><i class="fa fa-trash-o fa-lg"></i></a>

<a href="#" class="delete" data-ng-click="delete(futureTask,$event)"><i class="fa fa-calendar"></i></a>

转换为:

<button class="btn btn-link" data-ng-click="openDeleteDialog(futureTask,$event)" title="@ResourceDictionary.CommonDeleteLabel"><i class="fa fa-trash-o fa-lg"></i></button>

<button class="btn btn-link delete" data-ng-click="delete(futureTask,$event)"><i class="fa fa-calendar"></i></button>

1 个答案:

答案 0 :(得分:1)

我建议用3个正则表达式替换它。

  1. 使用 href="#" A 元素转换为 BUTTON 元素:
    搜索字符串:<a\s+([^>]*?)href="#"([\s\S]+?)</a>
    替换字符串:<button class="btn btn-link" \1\2</button>

  2. class="btn btn-link" 之后清理空白:
    搜索字符串:(class="btn btn-link")[\t ]{2,}
    替换字符串:\1\x20

  3. BUTTON 标记内加入课程:
    搜索字符串:(<button class="btn btn-link)"([^>]+?)class="(.+?)"\s*
    替换字符串:\1 \3"\2

  4. 当然可以在第二个替换字符串中使用空格字符而不是\x20

    这些3个正则表达式替换在几个示例行中进行了测试,其中href="#"位于 A 标记的任何位置, A 标记和字符串值中也包含新行使用UltraEdit v21.20。 Notepad ++应该替换与UltraEdit相同的内容。