如何在 VBA (Microsoft Word) 中使用 RegExp 查找行尾?
How do you find the end of a line using RegExp in VBA (Microsoft Word)?
我正在尝试使用正则表达式来查找特定的子字符串及其之后的所有内容,直到下一行。例如:
These are numbers: one, two, three
These are colors: yellow, blue, green
我想查找字符串“数字:一、二、三”,我使用了以下模式:
Public Sub TEST()
Set regex = CreateObject("VBScript.RegExp")
regex.Global = True
For Each Match In findRegEx(ActiveDocument.Range, "numbers: .*")
Debug.Print Match.Value
Next
End Sub
我发现的每个 'wildcard' 元字符的解释都让我相信它会找到每个字符 除了 换行符,但这种模式也 returns 第二行而不是第一行。我不确定我是否误解了 Word 中通配符或换行符的性质。
要求正则表达式不匹配行尾字符。
因此将 "numbers: .*"
替换为 "numbers: [^\n]*"
可以理解为“匹配以 'numbers: ' 和任何非行尾字符开头的字符串”。
如果您的字符串使用其他行尾字符,您将不得不将 \n 调整为一个或组合,可能是常见情况 \n \r.
不要尝试使用 vbCr
、vbNewLine
或 Chr(13)
作为模式定义的一部分 - 这些是文字。正则表达式语法需要特殊符号来指示这些值。
请注意,冒号“:”后有一个 space。
我正在尝试使用正则表达式来查找特定的子字符串及其之后的所有内容,直到下一行。例如:
These are numbers: one, two, three
These are colors: yellow, blue, green
我想查找字符串“数字:一、二、三”,我使用了以下模式:
Public Sub TEST()
Set regex = CreateObject("VBScript.RegExp")
regex.Global = True
For Each Match In findRegEx(ActiveDocument.Range, "numbers: .*")
Debug.Print Match.Value
Next
End Sub
我发现的每个 'wildcard' 元字符的解释都让我相信它会找到每个字符 除了 换行符,但这种模式也 returns 第二行而不是第一行。我不确定我是否误解了 Word 中通配符或换行符的性质。
要求正则表达式不匹配行尾字符。
因此将 "numbers: .*"
替换为 "numbers: [^\n]*"
可以理解为“匹配以 'numbers: ' 和任何非行尾字符开头的字符串”。
如果您的字符串使用其他行尾字符,您将不得不将 \n 调整为一个或组合,可能是常见情况 \n \r.
不要尝试使用 vbCr
、vbNewLine
或 Chr(13)
作为模式定义的一部分 - 这些是文字。正则表达式语法需要特殊符号来指示这些值。
请注意,冒号“:”后有一个 space。