所以我可以使用负面后卫来搜索字符串<ANYTHING>.dbo.TableName
的所有出现,其中<ANYTHING>
不是某个特定的字符串。问题是返回的匹配不会捕获<ANYTHING>
子表达式的值。例如,如果我有以下文字:
Test1.dbo.MyTable
Test2.dbo.MyTable
Test123.dbo.MyTable
Test223.dbo.MyTable
我使用以下正则表达式:
(?<!Test1)\.dbo\.MyTable
它确实捕获了除第一个之外的所有事件,但匹配仅包含.dbo.MyTable
,而不包含负面后卫忽略的前一个值。我怎样才能抓住缺失的部分?
答案 0 :(得分:3)
答案 1 :(得分:0)
更改正则表达式以使用否定前瞻:
^(?!Test1)\w+\.dbo\.
或者使用带有捕获的正面lookbehind(这将是.NET支持的可变长度lookbehind):
(?<!Test1)(?<=(\w+))\.dbo\.
第一种方式是更清洁的IMO。