我试图弄清楚是否有一种方法可以将字符串中所需的数据分开:
number = 3,
line = 1,
hardwarePartNum = '',
...
inv_status = 3,
inv_netName = 1,
inv_maintGrp = 3,
inv_maintVen = 4,
...
qty_SerialNum = '',
qty_Location = '',
qty_Property = '',
...
如上所示,我在查询中更新值时需要3种不同类型的值。
inv_...
和qty_...
是一个表,第一组3个值(前面没有zzz_
的值)在另一个表中。
如何以及可能将这些值分成两组。第一组没有zzz_
,第二组是inv_...
和qty_...
。
一旦我将它们分开,我就可以这样做:
UPDATE
bLine
SET
@val1
WHERE
theGuid = @val2;
UPDATE
invLine2
SET
@val3
WHERE
theGuid = @val4;
所以给出上述内容:
@val1 = number = 3,line = 1,hardwarePartNum = '',....
@val2 = 54grs-r459-32r-6exlq-15g4
@val3 = inv_status = 3,inv_netName = 1,inv_maintGrp = 3,inv_maintVen = 4,qty_SerialNum = '',qty_Location = '',qty_Property = '',....
@val4 = a45vz-u300-2bd-4710j-vf09
我确定某种类型的正则表达式可以做类似的事情,但我不是那么棒,所以任何帮助都会很棒!
答案 0 :(得分:0)
您需要两个正则表达式。一个获得前3行,另一个获得其余部分。
((?!((inv)|(qty))).*=.*),
将返回不以inv或qty开头的值,并将排除逗号。
(((inv)|(qty)).*=.*),
同样会告诉你它以inv或qty开头的情况,也不包括逗号。
使用Regex.Matches
获取与正则表达式匹配的所有行。你可能不得不使用RegexOptions.Multiline
我现在无法测试它。
您将使用第1组,而不是完整匹配。第1组是这些表达式最尖端括号的结果。完全匹配将保存逗号,然后我们不得不担心修剪最后一个。
您现在有两个字符串集合,使用string.Join
和','
将它们组合在一起并正确地在行之间放置逗号。