仅在标记之间进行Regexp替换

m2xkgtsf  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(80)

我有这段文字:

Some text here.
bla bla bla
<myTag>
   m_Member1 blah blah
   m_Member2 blah
   m_Member3 foo bar blah
<end>
Other text here...
bla bla.

我想替换m_Member1m_Member2,.通过Member1Member2,但仅在<myTag><end>之间。
我知道如何更换m_Member1.在整个文档中使用regexp:
搜索:(_|\t)+(m_)
替换为:\1\3
效果很好。但我只想在<myTag><end>之间执行此操作

egmofgnx

egmofgnx1#

  • Ctrl+H
  • 标签:(?:<myTag>|\G).*?\K\bm_(?=Member\d+(?:(?!<myTag>).)*?<end>)
  • 替换为:LEAVE EMPTY
    **TICK 匹配大小写 *
    ***滴答声 * 环绕 *
    ***SELECT * 正则表达式 *
    *未勾选. matches newline
  • 更换所有
    说明:
(?:                 # non capture group
    <myTag>             # open tag
  |                   # OR
    \G                  # restart from last match position
)                   # end group
.*?                 # 0 or more any character, not greedy
\K                  # forget all we have seen until this position
\b                  # word boundary
m_                  # literally
(?=                 # positive lookahead, make sure we have, after:
    Member\d+           # Member and 1 or more digits
    (?:                 # non capture group
        (?!<myTag>)         # negative lookahead, make sure we haven't <myTag> after
        .                   # any character
    )*?                 # end group, may appear 0 or more times
    <end>           # end tag
)                   # end lookahead

前截图:

后截图:

相关问题