我正在使用Notepad ++从HTML中删除除ID匹配('idxxxxxx')之外的所有内容。这是(部分)HTML:
{
href : "/id123456",
title : "Book 1",
year : "2013",
},
{
href : "/id234567",
title : "Book 2",
year : "2014",
},
{
href : "/id345678",
title : "Book 3",
year : "2015",
}
此正则表达式的行为不符合预期:
[^id\d{6}]
不是留下所有匹配的'idxxxxxx',而是留下部分:数字序列,任何'id'实例,不一定是6位数字等
答案 0 :(得分:1)
您可以使用分支重置。
查找(?s)(?|.*?(id\d{6})|.*())
替换$1
(?s) # Dot-all
(?| # Branch Reset
.*?
( id \d{6} ) # (1)
|
.*
( ) # (1)
)
答案 1 :(得分:0)
试试这个:
(?s).*?(id\d{6})|(?!id\d{6}).*$
它使用否定!?
。多行修饰符(?s)
。
你的正则表达式显然是错误的。 [^id\d{6}]
表示任何一个不是i
,d
,\
,{
,}
或6
的字符。< / p>
答案 2 :(得分:0)
Find what: [\s\S]+?/(id\d+)|[\s\S]*
Replace with: \1\n
输出:
id123456
id234567
id345678