Yaa*_*lis 8 c# regex lookahead lookbehind
我希望匹配一个字符串"Order By XXX",其中XXX可以是任何字母,数字,句号,逗号,空格或方括号.但是,我只想匹配它,如果它没有括号括起来(一边的括号是好的,只要它不在两边).所以它应该与""中的斜体部分相匹配,因为它不应该匹配任何东西
应匹配(斜体匹配部分):
不应该匹配:
我有正则表达式字符串用于按文本匹配顺序:[ ]*order by [\w,.\[\] ]+.但是,我在正确地进行前瞻/后期工作时遇到了一些麻烦.关于如何进行的任何建议?
尝试这个:
(?<!\(\s*)order\s+by\s+[\w,.\[\] ]+(?<!\s*\))
Run Code Online (Sandbox Code Playgroud)
在 PowerShell 中测试时:
PS> @(
'Select X from Y order by z'
'Select y = (select top 1 Z from C Order by [ID] desc)'
'Select X from Y (order by z)'
'Select a.a, NTILE(4) OVER (Order by a.b) group by a.c'
'Order by 87'
'(Order by 87)'
'( Order by 87 )'
'(Order by 87 )'
'( Order by 87)'
'Order by _foo'
) -match '(?<!\(\s*)order\s+by\s+[\w,.\[\] ]+(?<!\s*\))'
Select X from Y order by z
Select y = (select top 1 Z from C Order by [ID] desc)
Order by 87
Order by _foo
PS>
Run Code Online (Sandbox Code Playgroud)