如何使用Regex/c#
替換以下實現以下內容?如何使用正則表達式替換字符串中的數據模式?
輸入字符串我:「測試數據:<test param="p" value="v"/>
輸入字符串繼續」
輸出字符串我需要:「測試數據:((test param={p} value={v}))
輸入字符串繼續」
如何使用Regex/c#
替換以下實現以下內容?如何使用正則表達式替換字符串中的數據模式?
輸入字符串我:「測試數據:<test param="p" value="v"/>
輸入字符串繼續」
輸出字符串我需要:「測試數據:((test param={p} value={v}))
輸入字符串繼續」
我假設你真正的問題是如何實現的和查找/替換需求似乎是相當剛性的,這裏是一個爲您的工程案例:
Find: ([^:]*): <([^=]*)="([^"])"([^=]*)="([^"])"/>
Replace: $1: (($2={$3}$4={$5}))
查找表達式可細分如下:
([^:]*) # Capture zero or more characters that ARE NOT a colon
: < # Match a colon, a literal space, then a less-than sign
([^=]*) # Capture zero or more characters that ARE NOT an equals sign
=" # Match an equals sign, then a double quote
([^"]) # Capture zero or more characters that ARE NOT a double quote
" # Match a double quote
([^=]*) # Capture zero or more characters that ARE NOT an equals sign
=" # Match an equals sign, then a double quote
([^"]) # Capture zero or more characters that ARE NOT a double quote
"/> # Match a double quote, a forward slash, then a greater-than sign
正則表達式中的圓括號()
表示「捕獲」與括號內容匹配的任何字符。不在括號內的任何內容都將「匹配」,但在查找和替換期間將被丟棄。這對於從諸如從<name attribute1="value1"/>
中提取name
,attribute1
和value1
的模式提取數據位是有用的,然後將其放入另一種文本模式。
在C#中,使用System.Text.RegularExpressions.Regex對象來匹配或使用正則表達式進行替換。相信語法/簽名(對於實例的Regex對象的)是regexObject.Replace(input As String, replacement As String) As String
替換表達式包含$1
,$2
等,這指的是匹配的包圍在括號()
部分。因此,$1
(在替換表達式)將插入由第一組([^:]*)
匹配的文本(從匹配表達式)
這種組合將變成這樣的文字:
「測試數據:<測試PARAM = 「p」value =「v」/ >「更多文字。等等等等等等 「的測試數據:<測試PARAM =」 p 「的值= 」V「/ >」,然後一些文字...
進入這樣的文字:
「的測試數據: ((test param = {p} value = {v}))「more text。 ((測試param = {p}值= {v}))「然後再寫一些文字...
學習正則表達式的好資源我知道的90%)是Regular-Expressions.info,而一個名爲RegexBuddy的相關工具也適用於構建,測試和調試正則表達式。
它工作正常。你能解釋一下([^:] *)在替換工作中的Find和$ 1:部分中的方式嗎? –
我試圖解釋第三段中的'$ 1'(它開始'替換表達式包含...'),並且我不確定它是否不清楚或者是否丟失了某些東西。沒有深入到正則表達式內部,我不確定我還可以添加什麼:D或者你是否更多地詢問匹配部分'([^:] *):'? –
在$ 1旁邊做的冒號是什麼,和正則表達式相同嗎?是的,什麼([^:] *):表示。對不起,我的正則表達式技巧很弱。如果你分別匹配每一塊,爲什麼你需要([^:] *):在開始。那:令我困惑。 –
您是否需要有關RegEx或替換的幫助?向我們展示你到目前爲止的代碼。 – RedFilter
有點吝嗇的細節 - 什麼是一些接近但不應該匹配的東西? –
我所擁有的是匹配模式的正則表達式。從我所知道的你可以匹配一個正則表達式模式(我可以做到)並用另一個字符串替換它,但是我需要用另一個模式替換它,不知道該怎麼做,或者甚至可能。 –