我有一些传入的OData查询信息,我需要解析字符串的某些部分以确定某些内部过滤技术。
我有这个正则表达式
(?<LastWord>\A^[^\(]*|(eq|ne|gt|ge|lt|le|add|sub|mul|div|mod)|[-1$])
适用于以下字符串:
"startswith(tolower(columnName),'y') eq true" -- result is --> startswitheq
"endswith(tolower(columnName),'y') eq true" -- result is --> endswitheq
"indexof(tolower(columnName),'y') ge 0" -- result is --> indexofge
"indexof(tolower(columnName),'y') eq -1" -- result is --> indexofeq-1
"tolower(Column) eq 'y'" -- result is --> tolowereq
"tolower(columnName) ne 'y'" -- result is --> tolowerne
以下字符串不像其他字符串一样解析:
"startswith(tolower(Column),'1') eq true" -- result is --> startswith1eq
它被解析为&#34; startswith1eq&#34;,所以我需要帮助上面的正则表达式让它从头开始跳过整个部分&#34;(&#34;到最后一次出现的&#34;)&#34;,有什么建议吗?
这是一个.Net小提琴,包含当前正则表达式和上面的失败项: .Net Fiddle Code example
由于
答案 0 :(得分:0)
看起来你打算做一个非捕获组,但做了“其中任何一个”。
(?<LastWord>\A^[^\(]*|(eq|ne|gt|ge|lt|le|add|sub|mul|div|mod)|(?:-1$))
这对你有用吗?