在 XML 檔案的背景關系中,我想在正向后視和正向前瞻中使用 XML 標記將值轉換為小寫。
前:
<CONDITION NAME="ABC-DEF-GHI" DATE="DATE">
后:
<CONDITION NAME="abc-def-ghi" DATE="DATE">
從其他不起作用的問題/正則運算式 wiki 中嘗試了模式。
1.
FIND:
(?<=(<CONDITION NAME="))(. )(?=(" DATE="DATE"))
REPLACE:
\L0
FIND:
(?<=(<CONDITION NAME=".*))(\w)(?=(.*" DATE="DATE"))
REPLACE:
\L$1
使用 VS Code 1.62.1 MAC OS Darwin x64 19.6.0
uj5u.com熱心網友回復:
如果您想在左側和右側使用環視,則不需要任何捕獲組。
. 您可以使用否定字符類[^"] 來匹配除雙引號之外的任何字符,或者您可以使用它[\w-] 來匹配 1 個或多個單詞字符或連字符,而不是使用which 是廣泛匹配并且可以匹配太多:
(?<=<CONDITION NAME=")[^"] (?=" DATE="DATE")
正則運算式演示
使用完全匹配替換 $0
\L$0
另一種選擇是使用 2 個具有單個前瞻的捕獲組,因為環視可能很昂貴,并替換為 $1\L$2
(<CONDITION NAME=")([\w-] )(?=" DATE="DATE")
uj5u.com熱心網友回復:
模式 2 有效。替換值只需要從 \L$1 -> \L$2 改變
模式 1 也可以與 \L$2 一起用作替換值。
此模式有效: FIND:
(?<=(<CONDITION NAME=".*))(\w)(?=(.*" DATE="DATE")) REPLACE: \L$2
uj5u.com熱心網友回復:
確保讓其他組不被捕獲:
(?<=(?:<CONDITION NAME="))(. )(?=(?:" DATE="DATE"))
或者()完全忽略內部:
(?<=<CONDITION NAME=")(. )(?=" DATE="DATE")
或$2用作替代品。標準之間的一切都()變成了一個捕獲組,無論它們在運算式中的哪個位置。
并且要小心. ,在這種情況下[^"] 是一個更安全的選擇。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/361187.html
下一篇:如何在R中洗掉部分字符變數?
