Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要一些带有正则表达式的C#返回一个或多个匹配项_C#_Regex - Fatal编程技术网

需要一些带有正则表达式的C#返回一个或多个匹配项

需要一些带有正则表达式的C#返回一个或多个匹配项,c#,regex,C#,Regex,我有一个标签系统 标签看起来像这样 {Value:12345} or {ValueOR[null]:12345} 我需要 12345 第二个字符(如果存在),括号中的所有字符 号码必须始终存在 我试过这个: {Value:[0-9]+}|{ValueOR\[(.*)\]:[0-9]+} 但事实并非如此:) 在上面的例子中:如果文本是{Value:12345},我想看到“12345”,如果文本是{ValueOR[null]:12345},我想看到“12345”和“null” 例如,我正在构建一

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

{Value:12345}
or
{ValueOR[null]:12345}
我需要 12345 第二个字符(如果存在),括号中的所有字符 号码必须始终存在

我试过这个:

{Value:[0-9]+}|{ValueOR\[(.*)\]:[0-9]+}
但事实并非如此:)


在上面的例子中:如果文本是{Value:12345},我想看到“12345”,如果文本是{ValueOR[null]:12345},我想看到“12345”和“null”

例如,我正在构建一个标记替换系统来填充动态组合框 数据库中的字段将具有类似“exec sp_GetComoboValue{value:12345}”的内容。值“12345”指的是表单上的另一个筛选器字段。如果它去查找12345,并且它的值为“125”,我想将字符串更改为exec sp_GetComoboValue 125。如果字段12345不返回任何内容。sp无法执行;如果标记{valueOR[NULL]:12345}',则它将是exec sp_GetComoboValue NULL。注意空值是任意的,我不关心“[”和“]”之间的字符串是什么,如果OR[??]存在,我想使用它

如果有人感兴趣,我会采用以下解决方案
{(?Value | Caption | Global)(或[(?()])?:(?()}
这允许使用三种类型的标记,分别获取类型、或和字段id


再次感谢您的帮助。

此正则表达式应该可以:

\{Value(OR\[(.*)\])?:(.*)\}
像这样

{Value:(\d+)}\s*or\s*{ValueOR\[null\]:(\d+)?
对于C#基本思想是这样的,您可能需要检查是否将组[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;

我不确定你是否明白你的意思,但是你到底想打印什么?
\{Value(或\[.\])?:[0-9]+\}
“第二个”是哪一秒?在上面的例子中:如果文本是“{Value:12345}”,我想看到“12345”,如果文本是{ValueOR[null]:12345}我想看到“12345”和“null”谢谢,你让我不用整晚工作了!!