我有一个像这样的字符串:
<!NAME!>Admin : <!NAME!><!MSG!>Hello Guys<!MSG!><!ADD-ACC!>BOSS<!ADD-ACC!>
我想编写一个正则表达式模式来提取两个相同标签之间的文本,例如
<!NAME!>Admin : <!NAME!>
<!MSG!>Hello Guys<!MSG!>
<!ADD-ACC!>BOSS<!ADD-ACC!>
所以我写了这个正则表达式:
<!.*!>.*<!.*!>
但它给了我这个结果
<!NAME!>Admin : <!NAME!><!MSG!>Hello Guys<!MSG!><!ADD-ACC!>BOSS<!ADD-ACC!>
我明白为什么这样做,因为
<!NAME!> and <!ADD-ACC!> follows the regex pattern i am using.
所以我在考虑正则表达式中类似的东西
<!XXX!>.*<!XXX!> where XXX is the same text between tags so that REGEX could find and extract those tags from text like how i want it to be done.
最佳答案
您可以使用反向引用
(<!.*?!>).*?\1
.*
是贪婪量词,尽可能多匹配
.*?
是一个惰性量词,它尽可能更少匹配
(<!.*?!>)
将捕获组 1
我们可以使用 \1
在正则表达式中引用组 1 中捕获的值..所以,\1
指第一个捕获的组值
关于正则表达式:查找两个未知标签之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17575771/