首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配除加密行以外的所有内容的Regex

匹配除加密行以外的所有内容的Regex
EN

Stack Overflow用户
提问于 2021-03-10 23:08:30
回答 2查看 166关注 0票数 2

除了包含加密行的行外,我一直试图创建一个匹配文件中所有内容的regex。

文件示例:

代码语言:javascript
复制
random text0
set private-key "-----BEGIN ENCRYPTED PRIVATE KEY-----
 MIIFHDBOBgesdfsfsf242asdasdasdasdasdasdaDDADADADASS2
 sdfsfdsfsfs342424r2aa423412edqwdadawdawa1awdsadaAAAA
 242342342da==
set private-key "-----END ENCRYPTED PRIVATE KEY-----
random text1
random text2

使用regex,我想匹配所有随机文本,除了显示加密行的文本块。

我构建了以下正则表达式,但它似乎不起作用:

代码语言:javascript
复制
^(?!.*(\bset\s+private-key\s+"-----BEGIN\s+ENCRYPTED PRIVATE\s+KEY-----\b.*\bset private-key\s+"-----END\s+ENCRYPTED\s+PRIVATE\s+KEY-----\b)).*

--编辑-编辑

文件示例2:

代码语言:javascript
复制
test12
test22
test44
        set private-key "-----BEGIN ENCRYPTED PRIVATE KEY----- 
MasdasdasdasdasEq1XnGfVONkCAggA 
KpYsdfdasdasdasdafvpFFoUanRXimMv+d9n6YiahiJ4xqPnMOelMGE dC8FRR92rpsVuZiLtgGP5A== 
-----END ENCRYPTED PRIVATE KEY-----"

test2
test3
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-10 23:13:21

一个选项是匹配加密的部分,并捕获捕获组中的其他行。

代码语言:javascript
复制
^set\s+private-key\s+"-----BEGIN\s+ENCRYPTED PRIVATE\s+KEY-----(?:\r?\n(?!set private-key).*)*\r?\nset\s+private-key.*|(.+)

模式匹配:

  • 字符串的^开始
  • set\s+private-key\s+"-----BEGIN\s+ENCRYPTED PRIVATE\s+KEY-----匹配第一行
  • (?:非捕获群
    • \r?\n(?!set private-key).*)*匹配所有不以set private-key开头的行

  • \r?\n匹配换行符
  • set\s+private-key.*匹配以set private-key开头的行
  • |
  • (.+)匹配1+乘以组1中的任何字符

看一个regex演示

或匹配第1组中的多行:

代码语言:javascript
复制
^set\s+private-key\s+"-----BEGIN\s+ENCRYPTED PRIVATE\s+KEY-----(?:\r?\n(?!set private-key).*)*\r?\nset\s+private-key.*|(.+(?:\r?\n(?!set\s+private-key).*)*)

Regex演示

票数 1
EN

Stack Overflow用户

发布于 2021-03-10 23:48:31

这符合你的目的:

代码语言:javascript
复制
^(?! \w+=*$).*

现场演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66574190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档