2014-12-22 4 views
1

Может кто-нибудь помочь мне с одним регулярным выражениемРегулярное выражение сокращение строки между

My reg exp. является

  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 

Как я решить эту проблему?

ответ

1

Вы можете попробовать таким образом, как хорошо, что будет соответствовать недо & найден после пользователя =.

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

Online demo

выход:

admin 

шаблон Объяснение:

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

И заметьте, что, '[^ &] +' соответствует новой строки символов также. –

3

Используйте $ внутри положительного взгляда с помощью оператора чередования. $ называется концом линейного якоря.

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

DEMO

Смежные вопросы