Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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,首先,我正在用C语言编写一个计算器。 我将把一个字符串分成两个变量:Nb1和Nb2。我在网上查找示例,发现了一些东西: var numAlpha = new Regex("(?<Alpha>[a-zA-Z]*)(?<Numeric>[0-9]*)"); var match = numAlpha.Match("codename123"); var alpha = match.Groups["Alpha"].Value; // Alpha = codename var num

首先,我正在用C语言编写一个计算器。 我将把一个字符串分成两个变量:Nb1和Nb2。我在网上查找示例,发现了一些东西:

var numAlpha = new Regex("(?<Alpha>[a-zA-Z]*)(?<Numeric>[0-9]*)");
var match = numAlpha.Match("codename123");
var alpha = match.Groups["Alpha"].Value; // Alpha = codename
var num = match.Groups["Numeric"].Value; // Numeric = 123
var numAlpha=new Regex((?[a-zA-Z]*)(?[0-9]*)”;
var match=numAlpha.match(“代码名123”);
var alpha=match.Groups[“alpha”].Value;//Alpha=代码名
var num=match.Groups[“Numeric”].Value;//数值=123
我无法仅适应数字:“121165468746*1132”或“4586/6953” Nb1=121165468746 | | 4586 Nb2=1132 | | 6953

你能帮我吗?我快发疯了:-)

var numAlpha=new Regex(([0-9]+)([0-9]+)([0-9]+);
var match=numAlpha.match(“121165468746*1132”);
var nb1=match.Groups[“NumOne”].Value;//nb1=121165468746
var nb2=匹配.Groups[“NumTwo”].Value;//nb2=1132
var op=match.Groups[“Operator”].Value;//op=*
看起来您要做的是匹配由运算符分隔的一对整数。上面的正则表达式使用命名组
(?…)
,以及两个简单的正则表达式来实现这一点<代码>[0-9]+将匹配一个或多个数字,
[^0-9]
将匹配任何一个非数字字符,此处假定该字符为运算符

如果这不是你想要的,请留下评论,我会尽力帮助你。同时,一些阅读材料:


尝试在正则表达式中使用此模式:它假设至少有两个数字包含一个或多个数字,由一个或多个非数字字符分隔(如果运算符不只是一个字符)。这些组被称为
n1
n2

^(?<n1>\d+)[^\d]+?(?<n2>\d+)$
^(?\d+[^\d]+?(?\d+)$

使用以下方法将数字与预定义的4种基本运算相乘、减法、加、除进行匹配。您可以根据需要向“op”表达式添加更多运算符

Regex rg = new Regex(@"(?<num1>[0-9]+)(?<op>[\*\-\+\\])(?<num2>[0-9]+)");
Regex rg=newregex(@“(?[0-9]+)(?[\*\-\+\])(?[0-9]+)”;

您是否尝试过阅读一些关于Regex的文档?您所拥有的与您的输入不匹配。对于纯数字序列,它应该返回什么?@Eve:它会;量词是
*
,而不是
+
@minitech我指的是他的其他“数字”,而不是他代码中的字符串。我假设他想用正则表达式提取这两个数字——如果我错了,我会删除注释。即使它仍然匹配,我认为这不是海报所期望的。代码只是一个例子。我会用数字做同样的事情
Regex rg = new Regex(@"(?<num1>[0-9]+)(?<op>[\*\-\+\\])(?<num2>[0-9]+)");