вот регулярное выражение, которое должно работать:
[^(]+\(([^,]+),[^)]\)
Затем используйте группу захвата $1
, чтобы извлечь нужную деталь.
Я сделал проверку вменяемости в рубин:
orig = "IsNull(VSK1_DVal.RuntimeSUM,0),"
regex = /[^(]*\(([^,]+),[^)]\)/
result = orig.sub(regex){$1} # result => VSK1_DVal.RuntimeSUM,
Это становится сложнее, если у вас есть префикс, который вы хотите сохранить. Например, если у вас есть это:
"somestuff = IsNull(VSK1_DVal.RuntimeSUM,0),"
В этом случае вам нужно каким-то образом определить начало шаблона. Может быть, вы можете использовать '=' для определения начала шаблона? Если это так, это должно работать:
orig = "somestuff = IsNull(VSK1_DVal.RuntimeSUM,0),"
regex = /=\s*\w+\(([^,]+),[^)]\)/
result = orig.sub(regex){$1} # result => somestuff = VSK1_DVal.RuntimeSUM,
Но тогда случай, когда у вас нет знака равенства, не удастся. Может быть, вы можете использовать «IsNull» для определения начала шаблона? Если это так, попробуйте это (обратите внимание на «/ я», представляющую регистрозависимость соответствие):
orig = "somestuff = isnull(VSK1_DVal.RuntimeSUM,0),"
regex = /IsNull\(([^,]+),[^)]\)/i
result = orig.sub(regex){$1} # result => somestuff = VSK1_DVal.RuntimeSUM,
«Я использую MSSQL 2k5, я думаю, что он использует общий набор правил RegEx». Это неверно, если вы не включите CLR и не скомпилируете и не установите сборку. –