我試圖解析一個XML文檔(特別是一個Sublime顏色主題),並且我試圖使用負向前視來阻止我不想要的匹配,但它似乎沒有正常工作。在前面和後面匹配的Ruby中的負向前瞻
的模式如下:
/
<key>name<\/key>
.*? # find as little as possible including new lines
<string>(.*?)<\/string> # Match the name of this color Rule
.*?
<dict>
((?!<\/dict>).)*? # After the second opening <dict>, do not allow a closing </dict>
<key>foreground<\/key>
.*?
<string>(.*?)<\/string> # Match the hex code for the name found in Match 1.
/mx # Treat a newline as a character matched by .
# Ignore Whitespace, comments.
正被匹配的字符串是:
<dict>
<key>name</key>
<string>**Variable**</string>
<key>scope</key>
<string>variable</string>
<key>settings</key>
<dict>
<key>fontStyle</key>
<string></string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Keyword</string>
<key>scope</key>
<string>keyword - (source.c keyword.operator | source.c++ keyword.operator | source.objc keyword.operator | source.objc++ keyword.operator), keyword.operator.word</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>**#F92672**</string>
的整個字符串匹配時,與**Variable**
作爲第一捕獲組和**#F92672**
作爲第二。理想情況下,我希望在第二部分中第一個捕獲組成爲Keyword
。我認爲負面預測的存在意味着第一部分不會成爲比賽的一部分,因爲它會看到</dict>
而無法匹配。
有誰知道我是否做錯了,我能做些什麼來解決它?謝謝!
謝謝!我對xpath不太舒服,並且在Nokogiri遇到麻煩,但我會再試一次。 – mcheah