我有一个原始单词列表,并用一些单词替换,这些单词我想将某些句子中原始单词的出现替换为替换单词。

例如我的清单:

theabove      the above
myaddress     my address

所以这句话是“以上”。 将变为“这是上面的”。

我在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

我将列表myReplacementList中的所有条目与要处理的文本TextToReplace进行循环,并且替换必须是整个单词,因此我在原始单词周围使用了“ \\ b”标记。

效果很好,但是当原始单词包含一些特殊字符时,我遇到了问题

overla)   overlay

我尝试在模式中转义),但不起作用:

\boverla\)\\b

我不能用该单词替换“该单词是overla)。 改为“此词与该词重叠”。

不确定缺少什么? 正则表达式是否可以解决上述情况?

===============>>#1 票数:1

我会使用string.replace()。 这样,您就不必转义特殊字符..仅需以下字符:“”! 请参阅此处的示例: http : //www.dotnetperls.com/replace-vbnet

如果您正在寻找模式,则正则表达式非常有用。 或重命名mp3集合;-)等等。 但在您的情况下,我将使用string.replace()。

  ask by Steven Yong translate from so

未解决问题?本站智能推荐: