Regex以忽略中具有特定字符的字符串

本文关键字:字符 字符串 Regex | 更新日期: 2023-09-27 18:25:43

我需要让我的正则表达式匹配字符串中有"(随机值)"的部分,除非它在随机值中找到一个@,否则它应该忽略该部分。

例如,我有这个字符串

string storeProcDefinition = @"TTTTT.TTTTTTTT (@pname nvarchar, @pdec decimal(18,5) = null, @pnum numeric(18, 10), @pint int = null) AS BEGIN SET NOCOUNT ON; SELECT TTT"

所以我想去寻找所有与类似的部分中的"(任何)"匹配的部分

(18,5)
(18, 10)

而不是

(@pname nvarchar, @pdec decimal(18,5)`

我的想法是检查字符串中的@符号,或者在找到新的(但Regex并没有一个选项可以说不包含字符。

我有一个类似的东西

var matches = Regex.Matches(storeProcDefinition, @"'(^(?!'@)(.*?)')" );

与不匹配

Regex以忽略中具有特定字符的字符串

'([^@]*?')

应该起作用。请参阅演示。

说明:

'( // match a literal "("
[^@]*? // match any text except "@"...
') //...up to the next ")" character

请注意,这不支持像foo(bar())这样的嵌套大括号。