我想合并我的三个正则表达式,如果可能的话,清除文本(空行,前导和尾随空格等)到一个正则表达式,或者如果不可能 - 合并为两个。
我的第一个正则表达式是[ \t]+
。它做了这种清洁。
我的第二个正则表达式是^(?:[\t ]*(?:\r?\n|\r))+
不包含图像,因为如果之前的正则表达式没有运行,它将不会捕获任何内容。
第三个正则表达式是^[\s\xA0]+|[\s\xA0]+$
。它做了这种清洁。
编辑:我忘记提及在每种情况下我都会将匹配替换为""
。
编辑2:我在Word中使用以下代码:
With selection
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Global = True
RegEx.MultiLine = True
' clean selection
RegEx.Pattern = "[ \t]+"
.Text = RegEx.Replace(.Text, " ")
RegEx.Pattern = "^(?:[\t ]*(?:\r?\n|\r))+"
.Text = RegEx.Replace(.Text, "")
' the following is from http://stackoverflow.com/a/24049145/2657875
RegEx.Pattern = "^[\s\xA0]+|[\s\xA0]+$"
.Text = RegEx.Replace(.Text, "")
End With
答案 0 :(得分:1)
最后一个正则表达式可以合并为
RegEx.Pattern = "^(?:[\t ]*(?:\r?\n|\r)?)*|[ \t]+$"
我不认为有可能在VBA中合并所有3个,因为你使用了两种不同的替换模式。
答案 1 :(得分:0)
如果我没错,你想要匹配和删除所有的行/空格/制表符/白线,这样你就可以合并输入字符串。好吧,如果您在替换程序/脚本/命令中使用以下正则表达式,这很容易并且可以完成:
/([\s\t]{0,50}\r?\n)+|\s+/s
正则表达式应该适用于Windows以及基于Linux的文件。
答案 2 :(得分:0)
不是专业人士,但我一个接一个地使用多个正则表达式。如果您不熟悉下面的代码,那么就应该尝试。
Set regEx_ = new regExp
With regEx_
.Global = True
.MultiLine = True
.IgnoreCase = True
.Pattern = "Pattern 1"
TextLine = regEx_.replace(TextLine, "")
.Pattern = "Pattern 2"
TextLine = regEx_.replace(TextLine, "")
'and so on
End With