需要一些c#正则表达式返回一个或多个匹配

本文关键字:一个 正则表达式 返回 | 更新日期: 2023-09-27 18:02:18

我有一个标签系统标签看起来像这样

{Value:12345}
or
{ValueOR[null]:12345}

我需要12345第二个如果存在,则括号内的所有字符数字必须总是存在

我试过了:

{Value:[0-9]+}|{ValueOR'[(.*)']:[0-9]+}

当然不是这样的:)

在上面的例子中:如果文本是"{Value:12345}",我希望看到"12345";如果文本是{ValueOR[null]:12345},我希望同时看到"12345"answers"null"

例如,我正在构建一个标签替换系统来填充动态组合框数据库中的字段将具有类似'exec sp_GetComoboValue {value:12345}'的值'12345'指的是我在表单上的另一个过滤字段。如果它去查找12345,它的值'125',我想改变字符串执行sp_GetComoboValue 125。如果字段12345没有返回任何结果。sp不能执行;如果标签{valueOR[NULL]:12345}',那么它将是exec sp_GetComoboValue NULL。注意null是任意的,我不在乎'['和']'之间的字符串是什么,如果OR[????]我想用它

如果有人感兴趣,我用下面的解决方案{(?Value|Caption|Global)(OR[(?(.))])?:(?(.))}这允许三种类型的标签,从每个标签中获取类型、或字段id。

再次感谢您的帮助。

需要一些c#正则表达式返回一个或多个匹配

这个正则表达式应该可以工作:

'{Value(OR'[(.*)'])?:(.*)'}

像这样

{Value:('d+)}'s*or's*{ValueOR'[null']:('d+)?

对于c#的基本思想是这样的,你可能想检查Groups[2]是否设置为可选

Regex yourRegex = new Regex(@"{Value:('d+)}'s*or's*{ValueOR'[null']:('d+)?", RegexOptions.Multiline);
string id1 = yourRegex.Match(yourstring).Groups[1].Value;
string id2 = yourRegex.Match(yourstring).Groups[2].Value;
相关文章: