Regex 正则表达式删除文件中除字符串以外的所有内容

Regex 正则表达式删除文件中除字符串以外的所有内容,regex,notepad++,Regex,Notepad++,我正在尝试用Notepad++解析一些svg坐标。我想获取每一层的坐标集,并将坐标放在[]中,以便在javascript数组中使用 svg文件如下所示: <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) --> <!DOCTYPE svg PU

我正在尝试用Notepad++解析一些svg坐标。我想获取每一层的坐标集,并将坐标放在[]中,以便在javascript数组中使用

svg文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build     43363)  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"   "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg"  xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="800px"
 height="900px" viewBox="0 0 800 900" enable-background="new 0 0 800 900"   xml:space="preserve">
<g id="Layer_3">
<polyline fill="none" stroke="#0000FF" stroke-width="3" points="33,108 66,141 99,174 99,207 132,207 165,207 165,240     "/>
</g>
<g id="Layer_4">
<polyline fill="none" stroke="#0000FF" stroke-width="3" points="132,306 165,306 165,339 165,372 132,405 99,405 99,438 132,438 
    165,438     "/>
</g>
<g id="Layer_5">
<polyline fill="none" stroke="#0000FF" stroke-width="3" points="198,339 231,339 264,372 297,372 330,405 363,438 396,438     "/>
</g>
<g id="Layer_6">
<polyline fill="none" stroke="#0000FF" stroke-width="3" points="198,174 198,273 231,306 264,306     "/>
</g>
<g id="Layer_7">
<polyline fill="none" stroke="#0000FF" stroke-width="3" points="231,174 231,240 264,273 297,273     "/>
</g>
<g id="Layer_9">
<polyline fill="none" stroke="#0000FF" stroke-width="3" points="396,306 462,306 495,339 495,372 528,405 528,438 561,438 
    594,471     "/>
</g>
<g id="Layer_10">
<polyline fill="none" stroke="#0000FF" stroke-width="3" points="660,504 561,504 495,504     "/>
</g>
</svg>
[33,108 66,141 99,174 99,207 132,207 165,207 165,240]

[132,306 165,306 165,339 165,372 132,405 99,405 99,438 132,438 165,438]

[198,339 231,339 264,372 297,372 330,405 363,438 396,438]

[198,174 198,273 231,306 264,306]

[231,174 231,240 264,273 297,273]

[396,306 462,306 495,339 495,372 528,405 528,438 561,438 594,471]

[660,504 561,504 495,504]
我对正则表达式非常陌生,但下面是我的微弱尝试:

搜索:.+点=“(.+”)

替换为:[1美元]


我被卡住了,因为搜索部分似乎没有搜索“points”字符串上方的行。即使文档中的垃圾要高得多,我怎么能除去坐标之外的所有东西呢?

首先,我必须大体同意Ken White关于不使用正则表达式解析XML的观点。但是如果你想在记事本++中找到一个快速而肮脏的解决方案,试试这个(别忘了选中“.matches newline”选项):

查找:

替换:

[$1]\n\n

这几乎可以得到预期的结果(仍然需要手动删除一些尾随字符)。

不要用正则表达式解析XML。使用真正的XML解析器。这在这里已经被提到过一百万次了。使用合适的工具来完成这项工作,而不是试图把所有东西都做成钉子,这样你就可以使用锤子了。我不是在动态解析。你能解释一下为什么Notepadd++不应该用于这样的基本脱机编辑吗?它可以,但是如果它是一次性的,你可以使用多个操作来获得你需要的结果,而不需要在一个正则表达式中尝试。如果这是一项经常性的任务(您需要经常做的事情),请使用XML解析器,它将大大简化您的工作。(无论如何,我很困惑;你的问题是关于检索“points”值的,但随后又问为什么没有使用“points”之前的部分。这似乎很清楚:你要的是“points”值。找到以“c”开头的单词。等等-在第一个“c”单词之前的“a”和“b”单词不起作用。”?)我需要搜索东西,直到坐标开始的地方,以便删除这些东西。“点”一词是识别所需信息起始位置的最佳方式。举个例子,我说的是删除c之前的所有内容,同时也删除c。保留c后面的内容,直到有d为止。无论如何,我在谷歌上搜索了一些“xml解析器”,这似乎打开了一个全新的蠕虫罐。我不确定我现在是否有时间开始比较和研究不同的选项,所以我很高兴记事本++可以帮助我。谢谢!特别是“.matches newline”是有价值的信息!你的解决方案很有效!
[$1]\n\n