我有这个文本文件需要检查:
} else if ("saveAssured".equals(ACTION)) {
Integer assuredNo = giisAssuredService.saveAssured(assured);
模式将包含一个变量:
var = "saveAssured"
reMethod.Pattern = """& var &""[.]equals\(ACTION\).{\n.\w+?.=.\w+?[.](\w+?)\(\w+?\)"
我需要从文本文件中捕获第二个'saveAssured'。并且'\ n'(新行)似乎无效。我用过它了吗?我可以尝试其他哪些步骤?
答案 0 :(得分:1)
http://www.regular-expressions.info/dot.html
JavaScript和VBScript没有使点匹配的选项 换行符。在这些语言中,您可以使用角色 诸如
[\s\S]
之类的类来匹配任何字符。这个角色与a匹配 字符,它是一个空白字符(包括换行符) 字符),或不是空白字符的字符。以来 所有字符都是空格或非空格,这个字符 class匹配任何字符。
看看https://regex101.com/r/kH3aZ4/1
测试适用于JavaScript,但由于它们具有相同的Regex风格,因此该模式也适用于VBScript。
Dim reMethod
Set reMethod = New RegExp
reMethod.IgnoreCase = True
reMethod.Pattern = """saveAssured""\.equals\(ACTION\)[\s\S]*?\{[\s\S]*?\.([^(]*)\("
答案 1 :(得分:0)
VBScript表达式中有关多行的信息有点不一致。 VBScript RegExp对象确实支持它们,但是该属性没有得到很好的说明。
来自Regular Expression Programming (Scripting)
旗帜
在JScript正则表达式/ abc / gim中,g指定全局标志,i指定忽略大小写标志,m指定多行标志。
在VBScript中,可以通过将等效属性设置为True来指定这些标志。
下表显示了允许的标志。
JScript flag VBScript property If flag is present or property is True
g Global Find all occurrences of the pattern in the searched string instead of just the first occurrence.i IgnoreCase The search is case-insensitive.
m Multiline ^ matches positions following a \n or \r, and $ matches positions before \n or \r.
Whether or not the flag is present or the property is True, ^ matches the position at the start of the searched string, and $ matches the position at the end of the searched string.
下面是使用MultiLine
的示例。
Option Explicit
Dim rx: Set rx = New RegExp
Dim matches, match
Dim data: data = Array("This is two lines of text", "This is the second line", "Another line")
Dim txt: txt = Join(data, vbCrLf)
With rx
.Global= True
.MultiLine = True
.Pattern= "line$"
End With
Set matches = rx.Execute(txt)
WScript.Echo "Results:"
For Each match In matches
WScript.Echo match.Value
Next
输出:
Results:
line
line
将MultiLine
设置为False
的区别
输出:
Results:
line