вот регулярное выражение, которое должно работать:
[^(]+\(([^,]+),[^)]\)
Затем используйте $1
группу захвата, чтобы извлечь нужную часть.
Я сделал проверку работоспособности в ruby:
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», чтобы определить начало шаблона?Если это так, попробуйте это (обратите внимание на '/ i', представляющий сопоставление без учета регистра):
orig = "somestuff = isnull(VSK1_DVal.RuntimeSUM,0),"
regex = /IsNull\(([^,]+),[^)]\)/i
result = orig.sub(regex){$1} # result => somestuff = VSK1_DVal.RuntimeSUM,