簡體   English   中英

匹配除正則表達式模式之外的所有內容

[英]match everything except the regex pattern

我有一個 xml 內容如下

<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
</body>
</html>

在上面,我想處理除標題中的502 Bad Gateway之外的所有內容。

我使用下面的正則表達式來匹配502 Bad Gateway

(?<=title>)(.*?)(?=<\/title>)

有人可以告訴我如何否定它嗎?

我嘗試了以下建議

(?!((?<=title>)(.*?)(?=<\/title>)))
[^((?<=title>)(.*?)(?=<\/title>))]

但他們沒有奏效。

我正在使用 ruby 正則表達式

你想得到正則表達式不匹配的所有內容嗎?

使用您喜歡的語言保存結果。

使用一些工具,例如:

  • WinMerge
  • 超越比較
  • KDiff3
  • 差異合並
  • 合並
  • ...

其中一些可以生成補丁。 使用 File -> Open... 打開兩個版本進行比較。 這將使您對所做的更改有一個很好的了解。 https://docs.moodle.org/dev/How_to_create_a_patch#Creating_a_patch_using_WinMerge

您可以只使用sub刪除title中的“502 Bad Gateway”:

xml = "<head><title>502 Bad Gateway</title></head>"
xml.sub("<title>502 Bad Gateway</title>", "<title></title>")
# => "<head><title></title></head>"

對 ruby 不太熟悉,但我認為正則表達式的功能與 PCRE 相似,它支持控制動詞和遞歸。

這是與您的描述相匹配的正則表達式:

((?<=title>)502 Bad Gateway(?=<\/title>))(*SKIP)(*F)|(?:(?!(?1))[\s\S])+

證明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM