Regex 选择具有相同父标记名称的内部自定义标记

Regex 选择具有相同父标记名称的内部自定义标记,regex,Regex,我使用正则表达式来选择自定义标记,但是其中一些标记具有相同名称的内部标记 我的正则表达式搞混了 \[STORE.*?\]((.*?\n)*)\[\/STORE\] 正文: [STORE SMC,DODO]胡说八道 [STORE SMC]废话[/STORE] [商店渡渡鸟]胡说八道[商店]。 [/STORE] …此处的某些文本我不希望选中。。。 [STORE SMC]废话[/STORE] 选择另一运行或同一运行中的标记 试试这个: \[STORE[^\]]*]((.?|\n)*)\[\/STO

我使用正则表达式来选择自定义标记,但是其中一些标记具有相同名称的内部标记

我的正则表达式搞混了

\[STORE.*?\]((.*?\n)*)\[\/STORE\]
正文:

[STORE SMC,DODO]胡说八道
[STORE SMC]废话[/STORE]
[商店渡渡鸟]胡说八道[商店]。
[/STORE]
…此处的某些文本我不希望选中。。。
[STORE SMC]废话[/STORE]
选择另一运行或同一运行中的标记

试试这个:

\[STORE[^\]]*]((.?|\n)*)\[\/STORE\]
应按预期工作:


如果您还想获得内部标记,那么必须递归地应用这个正则表达式。我认为匹配这一点对于纯正则表达式来说太多了。

好吧,我应该补充一点,我不想被选中的一些标记之间有文本。我已经编辑了原文。感谢不应选择哪些文本?我已将测试标记为“此处的某些文本我不希望选择”。我已再次进行了修改,以便更清晰。对不起,我现在明白了。你用什么语言?这在正则表达式中是不可行的。对,我在Salesforce中使用的是APEX,它源于Java。它使用模式和匹配器类。如果需要,我可以打两个电话。我猜这就是出路。