C#Regex在表达式中获取元素

C#Regex在表达式中获取元素,c#,C#,我试图从字符串中包含的表达式中获取元素 例如:从表达式中获取元素,其中表达式1为 @@Expr[propAge>10?'ignore>':“ignore?”] 表达式2是 @@Expr[PropSex='M'?'ignore>']“ 在本例中,我感兴趣的是从上面的字符串中获取两个字符串数组 array1 = ["propAge",">","'ignore>'","'ignore?'"] array2 = ["propSex","=","'M'","'ignore>'"] 通常

我试图从字符串中包含的表达式中获取元素

例如:从表达式中获取元素,其中表达式1为

@@Expr[propAge>10?'ignore>':“ignore?”]

表达式2是

@@Expr[PropSex='M'?'ignore>']“

在本例中,我感兴趣的是从上面的字符串中获取两个字符串数组

array1 = ["propAge",">","'ignore>'","'ignore?'"]
array2 = ["propSex","=","'M'","'ignore>'"]

通常只使用正则表达式编写解析器是个坏主意,因为在不同上下文中试图区分相似的标记时会遇到各种有趣的问题。而且,只有两个示例通常不足以编写一个好的正则表达式

也就是说,在您的情况下,您可能可以使用以下内容:

(?xi) # turn on comments mode and case-insensitivity
  '[^']+'   # strings like 'ignore?'
|
  (?<=\[.*) # ensure that there's an opening square bracket to the left
            # to not match the @@Expr part
  [a-z]+    # matches e.g. propAge
|
  [<>=]     # operators
(?xi)#打开注释模式和大小写不敏感
“[^']+”#像“忽略”这样的字符串
|
(?类似于

\[(.+?)([<>=])(.+?)\?(.+?)(?::(.+?))?]
\[(.+?)([=])(.+?)\?(.+?)(.::(.+?)?]
应该有用

请注意,如果最后两个运算符中存在反斜杠转义或冒号,则此操作可能会失败


我不完全确定,但我认为问题完全被编辑破坏了。我认为“E.g.:”之后的文本本来是要作为要分析的源字符串以获得结果的?!您应该先尝试一下。谢谢。这是第一次出现。我如何才能获得字符串中所有出现的正则表达式?