【问题标题】:Regex Expression Parsing in c#c#中的正则表达式解析
【发布时间】:2018-02-06 23:52:06
【问题描述】:

使用正则表达式匹配字符串时抛出异常

string input = "CheckConvexity: Zone=CEILING VOID ZONE STORY 1, Surface=CEILING VOID LIVING:SLAB 2.2 931D4 is non-convex.  ...vertex 4 to vertex 5 to vertex 6  ...vertex 4=[5.41,15.05,3.90]  ...vertex 5=[1.19,10.82,3.90]  ...vertex 6=[-2.16,14.17,3.90]";
string pattern ="CheckConvexity:\ Zone=[^]*,\ Surface=[^]*\ is\ non-convex\.\ \.\.\.vertex\ [^]*\ to\ vertex\ [^]*\ to\ vertex\ [^]*\ \.\.\.vertex\ [^]*=\[[^]*]\ \.\.\.vertex\ [^]*=\[[^]*]\ \.\.\.vertex\ [^]*=\[[^]*]\ \.\.\.vertex\ [^]*\ to\ vertex\ [^]*\ to\ vertex\ [^]*\ \.\.\.vertex\ [^]*=\[[^]*]\ \.\.\.vertex\ [^]*=\[[^]*]\ \.\.\.vertex\ [^]*=\[[^]*]" ;

Regex.IsMatch(input,pattern,System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace);

以下是例外 -

发生“System.ArgumentException”类型的第一次机会异常 在 System.dll 中附加信息:解析“[^]*Errors\ found\ 获取\输入。\上一个\错误\原因\程序\ 终止。” - 未终止 [] 集。

帮我解决这个问题。

【问题讨论】:

  • 您能否显示引发异常的代码和exact异常消息?
  • 你的正则表达式中的[^] 是什么意思?
  • 首先,声明变量后没有分号。其次,您希望您的模式完全匹配什么?
  • 您需要转义这些反斜杠,否则正则表达式引擎将看不到它们,因为它们已被编译器删除。

标签: .net regex


【解决方案1】:

问题是[^] 没有任何意义。 [^abc] 将匹配任何字符除了 a、b 或c。根据正则表达式引擎,您没有提供“除外”部分。

如果您要匹配 ^ 字符,请使用 \^(根据您的语言转义反斜杠),因为普通的 ^ 具有特殊含义。

如果您想匹配任何字符(根据您的示例判断),请使用.*。 . 匹配任何单个字符,* 是指定“零个或多个先前”的量词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    相关资源
    最近更新 更多