我想找到介于<之间的文字。和>字符,然后将任何找到的文本转换为“正常”的情况,其中第一个字母大写。以下是我到目前为止的情况:
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
不适用于包含表格的文档。事实上,它甚至不会加粗正确的文本(<>
之间的文字。这使我相信我在这里有一个更广泛的问题,我错过了。
答案 0 :(得分:1)
我无法测试你的代码,但试试这个正则表达式
regEx.Pattern = "<[^0-9<>]+>"
你的正则表达式会在"<foo><bar>"
整个字符串中匹配
上述正则表达式仅匹配<foo>
,然后匹配<bar>
等等。