使用正则表达式替换除特定行之外的所有内容

时间:2018-12-12 20:58:18

标签: regex

我正在尝试替换与指定字符串不匹配的所有内容。我希望我能参加Match或类似的比赛,但不幸的是,我正在使用只能允许我在其replace函数中进行正则表达式调用的软件

例如,我的字符串将采用以下格式:

HTTP/1.1 200 OK
Date: Wed, 12 Dec 2018 20:51:23 GMT
Server: Apache
x-request-id: eb6cf28d-fad9-42e2-ac3d-4efcf66c5f9b
ETag: 83705a06-4562-4bbd-bcbe-c7643d2d6008
Content-Length: 531
Strict-Transport-Security: max-age=31536000;
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Robots-Tag: none
P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
Keep-Alive: timeout=15, max=200
Connection: Keep-Alive
Content-Type: application/json;charset=UTF-8

我需要删除所有不匹配的内容

ETag:83705a06-4562-4bbd-bcbe-c7643d2d6008

我写了一些正则表达式来选择 ETag:83705a06-4562-4bbd-bcbe-c7643d2d6008 ,看起来像(ETag: [a-zA-Z\d.-]*)

这确实选择了该行,但是我需要替换除该行以外的所有内容。我已经阅读了几则要求执行以下操作的帖子:

^(ETag: [a-zA-Z\d.-]*)

(?:(ETag: [a-zA-Z\d.-]*))

(ETag: [a-zA-Z\d.-]*)[^]

这些似乎都不起作用,我有一个运行在RegExr

上的示例

再次,我需要替换与 ETag:GUID 不匹配的所有内容。我将不胜感激。我确定我只是缺少一些小东西。

1 个答案:

答案 0 :(得分:2)

Regex并不是真正的否定词,但通常您可以使用否定的超前行:

^(?!ETag: [a-zA-Z\d.-]*).*$

这与不能匹配ETag:...的行的开头匹配,然后与其余的行匹配。您可以在此demo中查看其工作原理。