事后不久,但如果它对任何人有用,我能够按照此处的一个示例(由 sdgfsdg 提供)并快速获取 Notepad++ 的正则表达式。
我必须同样从 HTML 选择下拉选项列表中提取一些冗余数据,格式如下:
<select>
<option value="AC">saint_helena">Ascension Island</option>
<option value="AD">andorra">Andorra</option>
<option value="AE">united_arab_emirates">United Arab Emirates</option>
<option value="AF">afghanistan">Afghanistan</option>:
...
</select>
而我真正想要的是:
<select>
<option value="AC">Ascension Island</option>
<option value="AD">Andorra</option>
<option value="AE">United Arab Emirates</option>
<option value="AF">Afghanistan</option>
...
</select>
经过一番拉扯后,我意识到从 5.8.5 版(2010 年 9 月)开始,正则表达式似乎仍然不允许表达式中的某些循环(除非有另一种语法),例如,下面会发现甚至">united_arab_emirated_emirates"> 尽管有额外的分隔下划线:
(">)([a-z]+([_]*[a-z]*)*)(">)
此查询在大多数通用RegEx 工具中都有效,但在 Notepad++ 中,我必须手动计算嵌套下划线的最大数量(不幸的是 8 个),使用更丑陋的:
(">)([a-z]+[_]*[a-z]*[_]*[a-z]*[_]*[a-z]*[_]*[a-z]*)[_]*[a-z]*[_]*[a-z]*[_]*[a-z]*[_]*[a-z]*(">)
如果有人知道在 Notepad++ 的替换功能中模拟正则表达式循环的方法,请告诉我。
查找内容: *(">)([az]+[_] [az] [_] [az] [_] [az] [_] [az] )[_] [az] [_] [az] [_] [az] [_] [az] (">)*
替换为: ">
结果: 替换了 255 次。