正则表达式正则表达式

时间:2012-12-26 23:27:39

标签: 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 = match.Groups["Numeric"].Value; // Numeric = 123

我不能只调整数字:“121165468746 * 1132”或“4586/6953” Nb1 = 121165468746 || 4586 Nb2 = 1132 || 6953

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

3 个答案:

答案 0 :(得分:0)

var numAlpha = new Regex("(?<NumOne>[0-9]+)(?<Operator>[^0-9])(?<NumTwo>[0-9]+)");
var match = numAlpha.Match("121165468746*1132");
var nb1 = match.Groups["NumOne"].Value; // nb1 = 121165468746
var nb2 = match.Groups["NumTwo"].Value; // nb2 = 1132
var op = match.Groups["Operator"].Value; // op = *

看起来你要做的是匹配由运算符分隔的一对整数。上面的正则表达式使用命名组(?<GroupName> ... )和两个简单​​的正则表达式来实现它。 [0-9]+将匹配一个或多个数字,[^0-9]将匹配任何一个非数字字符,此处假定为运算符。

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

答案 1 :(得分:0)

尝试将此模式用于正则表达式:它假定至少有两个数字带有一个或多个数字,由一个或多个非数字字符分隔(如果运算符不仅仅是一个字符)。这些组称为n1n2

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

答案 2 :(得分:0)

使用以下内容将数字与预定义的4个基本操作匹配乘法,减法,加法,除法。您可以根据需要在“op”表达式中添加更多运算符。

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