Word VBA - 在分隔符之间查找文本并转换为小写

时间:2009-10-03 00:31:57

标签: regex vba replace find

我想找到介于<之间的文字。和>字符,然后将任何找到的文本转换为“正常”的情况,其中第一个字母大写。以下是我到目前为止的情况:

Function findTextBetweenCarots() As String

Dim strText As String

With Selection
    .Find.Text = "<"  ' what about <[^0-9]+>  ?
    .Find.Forward = True
    .Find.Wrap = wdFindContinue
End With

Selection.Find.Execute


 ' Application.Selection. ' how do I get the text between the other ">"?
    findCarotSymb = Application.Selection.Text

End Function

或者,有更好的方法吗?我还使用VBScript Regex 5.5库来处理这个问题,该库处理简单文档,但不处理具有复杂表的某些文档。例如,尝试加粗文本(为简单起见):

 Sub BoldUpperCaseWords()

  Dim regEx, Match, Matches
  Dim rngRange As Range

  Set regEx = New RegExp
  regEx.Pattern = "<[^0-9]+>"
  regEx.IgnoreCase = False
  regEx.Global = True

  Set Matches = regEx.Execute(ActiveDocument.Range.Text)

  For Each Match In Matches

     ActiveDocument.Range(Match.FirstIndex, Match.FirstIndex + Len(Match.Value)).Bold = True

  Next

End Sub

不适用于包含表格的文档。事实上,它甚至不会加粗正确的文本(<>之间的文字。这使我相信我在这里有一个更广泛的问题,我错过了。

1 个答案:

答案 0 :(得分:1)

我无法测试你的代码,但试试这个正则表达式

regEx.Pattern = "<[^0-9<>]+>"

你的正则表达式会在"<foo><bar>"整个字符串中匹配 上述正则表达式仅匹配<foo>,然后匹配<bar>等等。