0
我有一個原始單詞列表,並替換爲我想用某些句子中的原始單詞替換單詞替換單詞的單詞。使用正則表達式的整個單詞替換
例如我的名單:
theabove the above
myaddress my address
所以一句 「這是theabove。」將成爲「這是上述」。
我使用正則表達式在VB中是這樣的:
Dim strPattern As String
Dim regex As New RegExp
regex.Global = True
If Not IsEmpty(myReplacementList) Then
For intRow = 0 To UBound(myReplacementList, 2)
strReplaceWith = IIf(IsNull(myReplacementList(COL_REPLACEMENTWORD, intRow)), " ", varReplacements(COL_REPLACEMENTWORD, intRow))
strPattern = "\b" & myReplacementList(COL_ORIGINALWORD, intRow) & "\b"
regex.Pattern = strPattern
TextToCleanUp = regex.Replace(TextToReplace, strReplaceWith)
Next
End If
我圈在對文本TextToReplace我要處理我的列表myReplacementList所有條目,並替代必須是完整的單詞,所以我用了「\ b」令牌圍繞原始單詞。
它運作良好,但我有一個問題,當原話包含例如一些特殊字符
overla) overlay
我嘗試在模式逃脫),但它不工作:
\boverla\)\\b
我不能用這個詞替換句子「這個詞是疊加的」。「 「這個詞與這個詞重疊。」
不確定缺少什麼?正則表達式是上述場景的方式嗎?
感謝@gilu,我的問題與string.replace是,它不能輕鬆處理整個單詞替換。 例如,如果我將「carr」替換爲「car」,我的句子「這是我的carr和我攜帶的現金」。會變成「這是我的車和我付出的現金。」 –
我明白了,你是對的! 這很棘手! 您可以做的是,從您的字符串(string.replace())中刪除所有+「*ç%&/(),然後使用您的正則表達式來查找這些字詞。 http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.escape.aspx 這可能也有幫助。 – gilu