正则表达式之间切割字符串

时间:2014-12-22 10:58:52

标签: regex

有人可以用一个正则表达式帮助我

我的注册表是

          SELECT REX.[Value],RS.LogEntryId FROM ReportServerReplica.[dbo].[ExecutionLogStorage] RS 
          OUTER APPLY [WarehouseMgmt].RegExpMatches(RS.[Parameters], '(?<=User=).+?(?=&)') REX
          WHERE RS.[Parameters] IS NOT NULL 

当我有像

这样的例子时,它会起作用
&User=admin&Format:isnull=true&R

但它不适用于

&User=admin

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

使用交替运算符在正向前瞻内部使用$$称为行锚的结束。

(?<=User=).+?(?=&|$)

DEMO

答案 1 :(得分:1)

您可以尝试以这种方式匹配,直到 User = 之后找到&

(?<=User=)[^&]+

Online demo

输出:

admin

模式说明:

  (?<=                     look behind to see if there is:
    User=                    'User='
  )                        end of look-behind
  [^&]+                    any character except: '&' (1 or more times)