我想知道RegEx
类中是否存在任何方法来检查表达式是否具有有效的语法。
如果正则表达式匹配字符串或类似的东西,我并不意味着“IsMatch”或“Success”方法对我没有帮助。
要理解我,例如在对此表达式使用RegEx.Match
方法时,它会抛出异常,因为表达式的语法无效:
"\\\"
(没有双引号)
我已经检查了正则表达式类方法,但我找不到任何像“tryparser”。
然后检查表达式是否具有有效的语法我正在这样做:
Try
Regex.Match(String.Empty, "\")
Return True
Catch
Return False
End Try
我想知道是否可以通过直接从regex
类中的方法返回值或将regex
类方法的结果转换为boolean来简化代码。
更新:
我在执行时创建了RegEx,对我的外部工具没有帮助。
答案 0 :(得分:5)
从技术上讲,你可以使用Regex的构造函数......
Private Shared Function IsRegexValid(str As String) As Boolean
Dim result As Boolean
Try
Dim rx as Regex = New Regex(str)
result = True
Catch ex As ArgumentException
result = False
End Try
Return result
End Function
或构建Regex
对象或返回Nothing
...
Private Shared Function TryBuildRegex(str As String) As Regex
Dim result As Regex
Try
result = New Regex(str)
Catch ex As ArgumentException
result = Nothing
End Try
Return result
End Function
然后
Dim isvalid As Boolean = IsRegexValid("\")
或
Dim rx As Regex = TryBuildRegex("\")
If rx IsNot Nothing Then
End If
答案 1 :(得分:1)
除非您动态创建正则表达式,否则可以使用Expresso或The Regulator之类的工具。
它们既非常好又有用,它们还可以帮助您构建表达式或分析现有表达式。