我有一个模式为* + [*]*[/*] + *
的输入文本:
输入:[tag]random text EXCLUDE[/tag] text here
输出:text here
输入:[tag_1]another random text EXCLUDE[/tag_1] another text here
输出:another text here
输入:[tag_1]another random text EXCLUDE[/tag_1] another text here [tag_1] another random text EXCLUDE[/tag_1] text [tag_3]another random text EXCLUDE[/tag_3]
输出:another text here text
我想要的是删除[*]
和[/*]
之间的文本,比如用"“替换它。
问题是[]
之间的符号是随机的,但是如果有一个开放的[*]
,则有和封闭的[/*]
,没有嵌套。
2条答案
按热度按时间cnjp1d6j1#
这应该可以达到目的:
要点是,[]中的文本实际上并不重要,我们所需要的只是方括号作为“锚”。
我试过了,但没能写出一个简洁的一步一步的解释......我的建议是将代码复制粘贴到控制台中,给它一些数据,然后观察每一步的结果,这是不言而喻的。
iklwldmw2#
对于正则表达式来说,这看起来是一个不错的工作:
https://regex101.com/r/cE6NZm/1
基本上,它捕获
[this]
和[/this]
之间的任何内容(注意,它们是相同的,但第二个必须在/
之后),并释放字符串的这一部分