C#Regex在表达式中获取元素
我试图从字符串中包含的表达式中获取元素 例如:从表达式中获取元素,其中表达式1为C#Regex在表达式中获取元素,c#,C#,我试图从字符串中包含的表达式中获取元素 例如:从表达式中获取元素,其中表达式1为 @@Expr[propAge>10?'ignore>':“ignore?”] 表达式2是 @@Expr[PropSex='M'?'ignore>']“ 在本例中,我感兴趣的是从上面的字符串中获取两个字符串数组 array1 = ["propAge",">","'ignore>'","'ignore?'"] array2 = ["propSex","=","'M'","'ignore>'"] 通常
@@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.:”之后的文本本来是要作为要分析的源字符串以获得结果的?!您应该先尝试一下。谢谢。这是第一次出现。我如何才能获得字符串中所有出现的正则表达式?