使用.Net C#,我想匹配以下内容中$ select子句中的名称:
http://serveraddress/ODataServ/WcfDataService.svc/Persons?$select=LAST_NAME_IDNT,FIRST_NAME_IDNT&$top=1&$filter=Id eq '0000'
所以我想拥有" LAST_NAME_IDNT,FIRST_NAME_IDNT" (我稍后会根据逗号分割它)
$ select子句可以位于URL的中间,也可以位于末尾,即:
http://serveraddress/ODataServ/WcfDataService.svc/Persons?$top=1&$filter=Id eq '0000'&$select=LAST_NAME_IDNT,FIRST_NAME_IDNT
所以我写了以下模式:(\$select\=)(.[^&])*(&|$)
并试图获得第2组。我不知道它是否因为懒惰匹配,但第2组只包含两个字符:例如" NT"在我的例子中。
我不知道如何制作它,以便我可以检索" LAST_NAME_IDNT,FIRST_NAME_IDNT"
提前致谢
答案 0 :(得分:1)
答案 1 :(得分:1)
您正在使用的正则表达式:
(\$select\=)(.[^&])*?(&|$)
(。[^&]) - 此捕获组一起捕获两个字符。任何角色而不是&amp ;.
现在(。[^&])*?表示惰性匹配的这两个字符中的0个或更多个集合。因此,捕获组将始终具有匹配的最后两个字符
请改用:
(\$select\=)([^&]*)