我有這個svg
<circle id="a/b/c" stroke="#2C2C2C" stroke-width="2" fill="#FFF" fill-rule="nonzero" cx="141" cy="21" r="9"/><text id="a/b/c-something" font-size="10" fill="#2C2C2C"><tspan x="0" y="10">a/b/c Something</tspan></text>
我想替換id="a/b/c"to id="a-b-c"in thecircle和
id="a/b/c-something"to id="a-b-c-something"intext
并排除a/b/c Something被替換。
我正在使用 vscode,并且我已經嘗試過(id=. )\/(. ),但它似乎無法正確匹配它。我想要
uj5u.com熱心網友回復:
一個通用的方法是匹配并捕獲第一個符合條件的/char之前的部分,匹配這個char而不捕獲,然后匹配右邊的部分以確保背景關系正確,然后替換為Group 1 value new char 第 2 組值。
一般方案是
Find: (left-hand context)text to remove/replace(right-hand context)
Replace: $1new_text$2
然后重復,直到不再對檔案進行更改。
在您的情況下,您可以使用
查找內容: (\sid="[^"/]*)/([^"]*"[^>]*>)
替換為:$1-$2
請參閱正則運算式演示。詳情:
(- 第 1 組:\s- 一個空格id="- 固定文本[^"]*- 零個或多個字符以外的"字符
)- 第 1 組結束/- 一個/字符(- 第 2 組:[^"]*- 零個或多個字符""- 一個"字符[^>]*- 零個或多個字符>>- 一個>字符
)- 第 2 組結束。
這適用于檔案搜索和替換以及檔案內搜索和替換功能。
如果您使用檔案內搜索和替換功能對單個檔案應用正則運算式,則可以使用基于環視的模式一次性實作目標:
查找內容: (?<=\sid="[^"]*)/(?=[^"]*"[^>]*>)
替換為:-
請參閱此正則運算式演示。詳情:
(?<=\sid="[^"]*)- 與緊接在其前面的位置相匹配的正向回溯\s- 一個空格id="- 固定文本[^"]*- 零個或多個字符以外的"字符
/- 一個/字符(?=[^"]*"[^>]*>)- 與緊隨其后的位置匹配的正向超前[^"]*- 零個或多個字符""- 一個"字符[^>]*- 零個或多個字符>>- 一個>字符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/483116.html
