正则表达式模式帮助

时间:2010-12-23 02:21:04

标签: c# asp.net regex

我将有以下可能的字符串:

12_3

12_3 + 14_1 + 16_3-400_2

数字可能不同,但我正在寻找的是X_X数字模式。但是,我需要进行替换,搜索2_3并且不将12_3作为有效匹配返回。

+/-是艺术符号,可以是任何有效值。他们也需要ARENT(在第一个例子中)..所以,我可能想要检查一个只有12_3的字符串,如果我传入2_3,它将不会返回匹配。只有我通过了12_3。

这是针对C#脚本的。

非常感谢您的帮助!!我是正则表达式愚蠢。

2 个答案:

答案 0 :(得分:2)

好的,我们有, 2_3 + 12_3 + 14_1 + 16_3-400_2 + 2_3

regexp#1:

Regex r1 = new Regex(@"\d+(\d_\d)");
MatchCollection mc = r1.Matches(sourcestring);

找到匹配项:

[0] [0] = 12_3 [0] [1] = 2_3

[1] [0] = 14_1 [1] [1] = 4_1

[2] [0] = 16_3 [2] [1] = 6_3

[3] [0] = 400_2 [3] [1] = 0_2

regexp#2:

Regex r2 = new Regex(@"\d+\d_\d");
MatchCollection mc = r2.Matches(sourcestring);

找到匹配项:

[0] [0] = 12_3

[1] [0] = 14_1

[2] [0] = 16_3

[3] [0] = 400_2

这是你想要的吗?

答案 1 :(得分:2)

\b\d+_\d+\b

\d是数字,\b是零宽度字边界。请参阅此C# regex cheat sheet

更新:我刚刚查找了一个“C#正则表达式备忘单”来验证\b是否为单词边界(grep中为\<\>)。这是第一个结果。我实际上没有验证文本。无论如何,我现在链接到另一个备忘单。