3

我想知道RegEx类中是否存在任何方法来检查表达式是否具有有效的语法。

我不是说如果正则表达式匹配一个字符串或类似的东西,那么“IsMatch”或“Success”方法对我没有帮助。

为了理解我,例如,当使用RegEx.Match这个表达式的方法时,它会抛出一个异常,因为表达式的语法无效:

"\\\" 

(不带双引号)

我检查了正则表达式类方法,但找不到像“tryparser”这样的方法。

然后检查一个表达式是否有有效的语法,我这样做:

Try
    Regex.Match(String.Empty, "\")
    Return True
Catch
    Return False
End Try

只是我想知道我是否可以通过直接从regex类的方法返回值或将类方法的结果转换为布尔值来简化代码regex

更新:

我在执行时创建 RegEx,对我的外部工具没有帮助。

在此处输入图像描述

4

2 回答 2

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
于 2013-09-11T07:44:26.650 回答
1

除非您是动态创建正则表达式,否则您可以使用ExpressoThe Regulator 之类的工具。

它们都非常好且有用,它们还将帮助您构建表达或分析现有表达。

于 2013-09-11T07:36:55.290 回答