我已阅读了大约 15 篇有关正则表达式的教程,但我显然没有理解,因为我无法根据我的问题进行调整。
我有一组代码,可以在许多不同的文档中找到。这两个锚标记之间可能存在具有不同内容的变体,但这里只有一个变体(其他的都是类似形式)。
[anchor=ad1][img]http://i.imgur.com/48rwaraw.png[/img]
[URL=http://goo.gl/Ii3WNz][img]http://i.imgur.com/rBbf7nM.png[/img][/URL]
[size=7pt]Advertised sites are not endorsed and may be unsafe, untrustworthy, or illegal in your jurisdiction. [url=http://goo.gl/aw52j52]Advertise here.[/url][/size]
[img]http://i.imgur.com/48rwaraw.png[/img][anchor=ad1end]
我希望能够替换锚标记之间的所有内容,即我的 * 在此处:
[anchor=ad1]*[anchor=ad1end]
如果这会产生影响,则替换将包含与原始字符相似的字符。我似乎无法使用正则表达式来找到正确的字符串,更不用说用另一个字符串替换它了。谢谢您的帮助。
编辑:使用 ToolBucket 使用多行
答案1
查找并替换标签之间的多行文本字符串
解决方案 #1
Find what
在: \[anchor=ad1\](.*?)\[anchor=ad1end\]
、
Replace with
:和[anchor=ad1]replace[anchor=ad1end]
select中使用以下正则表达式Regular expression
[x] . matches newline
测试样本数据:
[anchor=ad1]some multiline string of text
that should be replaced[anchor=ad1end]
[anchor=ad1][img]http://i.imgur.com/some_image.png[/img]
another one multiline string of text
that should be replaced[anchor=ad1end]
...
解决方案 #2
更高级的解决方案。这需要 Notepad++ v6.0 或更高版本。
查找内容:(?<=\[anchor=ad1\]).*?(?=\[anchor=ad1end\])
替换为:replace
选择Regular expression
并[x] . matches newline
重要的提示:Replace
按钮在 Notepad++ v6.1.6 中不起作用,但是Replace All
工作正常。
答案2
您可以在搜索查询中包含开始和结束标签。然后使用 RegEx 捕获中间的所有内容.*
[anchor=ad1].*[anchor=ad1end]
关键是确保选中“。匹配换行符”。请参见下面的屏幕截图。