regex - 匹配两个长字符串并忽略其间所有内容的正则表达式

标签 regex notepad++

我正在一个 150 万行的 Premiere Pro 项目中搜索任何与我的音频过滤器之一匹配并设置为单声道的文本。 我正在搜索的文本以 <ChannelType> 开头标记并以 <FilterMatchName> 结尾标签。所以它看起来像这样

<ChannelType>0</ChannelType>
            <FrameRate>5292000</FrameRate>
        </AudioComponent>
        <FilterPreset>0</FilterPreset>
        <OpaqueData Encoding="base64" Checksum="53060659">AAAAAD8L8lo+AUr+Pac1NjwTmoUAAAAAP0uQDD37nIg9ui6MPjwU5j+AAAA+C/JaAAAAAD8qqqsAAAAAP4AAAD92L8w9py8FAAAAAHNvZnQgY29tcHJlc3Npb24AIiBkZWZhdWx0PSIwIiBzdGVwPSIxIiBtaW49IjAiIG1heD0iMSIvPgoJICA8Zmw=</OpaqueData>
        <FilterIndex>-1</FilterIndex>
        <FilterMatchName>1094998321 Dynamics1</FilterMatchName>

如果我在 Word 文档中,我会按以下方式查找

<ChannelType>0</ChannelType>*<FilterMatchName>1094998321 Dynamics1</FilterMatchName>

我对 Regex 很不满意。我希望有人能帮助我。我尝试过的所有内容要么不匹配,要么匹配文档中的所有内容。我正在使用 Notepad++。

最佳答案

由于您在 Notepad++ 中工作,因此您可以访问 PCRE常用表达。这将获取 <ChannelType> 之间的所有文本和 </FilterMatchName>

(?s)<ChannelType>.*?</FilterMatchName>
  • (?s)允许 .匹配换行符
  • 匹配后<ChannelType> , .*?延迟匹配所有字符直到...
  • 结束</FilterMatchName> ,我们匹配。

如果您有任何问题,请告诉我。 :)

关于regex - 匹配两个长字符串并忽略其间所有内容的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24273748/

相关文章:

regex - vim 模式匹配两个标记,中间没有另一个给定的标记

正则表达式仅返回新行字符之前的数字

正则表达式 "either/or"但不是 "neither"

html - 使用 Vim 作为 HTML 编辑器

replace - 如何用 Notepad++ 在所有行的每一行末尾添加一个字符

javascript - 在 IE 和 Chrome 中工作的代码在 Firefox 中不起作用

java - java中的正则表达式 _ 是什么意思

regex - Powershell 中的高级模式匹配

ssh - Notepad++ NppFTP [SFTP] 连接失败 : Error reading socket

plugins - Notepad++ 插件,用于 Ctrl+单击方法