【问题标题】:Regex: find text between two unknown tags正则表达式:在两个未知标签之间查找文本
【发布时间】:2023-03-19 05:10:02
【问题描述】:

我有一个这样的字符串:

<!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.

【问题讨论】:

    标签: regex match validation


    【解决方案1】:

    你可以使用反向引用

    (<!.*?!>).*?\1
    

    .* 是贪婪的量词,它尽可能匹配much

    .*? 是一个惰性量词,它尽可能匹配 less

    (&lt;!.*?!&gt;) 将捕获 group 1

    中的标签

    我们可以使用\1..So,\1 引用第一个捕获的组值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多