我希望处理大量文件,作为代码迁移后的一部分。迁移工具可以处理RegEx,我们写下面的内容:
'#Replace'.Columns(“,”。。Columns.Item(“
这取代了所有出现的“.Columns”(“with”.Columns.Item(“。
作为我们的要求之一,我想用双引号替换NullString字,即“”
例如。可选ByVal strID2 As String = NullString
应该成为
可选ByVal strID2 As String =“”
这是必需的,因为VB6中的NullString现在变成了一个类变量,而在函数声明中它需要是一个常量。
因此,我需要一个RegEx,其中一个标准如下:
我可以使用2中的一个作为标准,但无法编写RegEx。下面是我的示例文件,我已经解释了我想要的每一行。
第1行 :Public Function getAllAddresses(ByVal lngObjectType As String, ByVal strID1 As String, Optional ByVal strID2 As String = NullString, Optional ByVal strID3 As String = NullString, Optional ByVal blnExtraAddresses As Boolean = False, Optional ByRef objDataRequest As CDataRequest = Nothing) As ADORecordset
第2行 :Dim s为String
第3行 :s = NullString
第4行 (空白):
第5行 :Public Function getDefaultPaymentAddress(ByVal lngObjectType As Integer, ByVal strID1 As String, ByVal strID2 As String, Optional ByRef objDataRequest As CDataRequest = Nothing) As typAddress
第6行 :Public Function myfunc(Optional ByVal strID2 As String = NullString, _
第7行 :Optional ByVal strID3 As String = NullString, _
第8行 :Optional ByVal blnExtraAddresses As Boolean = False, _
第9行 :Optional ByRef objDataRequest As CDataRequest = Nothing) As String
第10行 :'Some code comments with = NullString
更多行 直到文件结尾:
每行的预期 输出 :
If myVar = NullString Then
的内容,但不应该匹配和替换
在此先感谢您的帮助。答案 0 :(得分:1)
使用一个正则表达式无法进行所有更改。
您可以尝试以下方法:
' Repeat this until there are no more changes.
Search: (Function +\w+ *\([^)]*?)\bNullString\b
Replace: $1""
' Use a multiline match for this one.
Search: ^([ \t]*\w+ *= *)NullString\b
Replace: $1""