Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.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#_Asp.net_Regex - Fatal编程技术网

C# 正则表达式模式帮助

C# 正则表达式模式帮助,c#,asp.net,regex,C#,Asp.net,Regex,我将有以下可能的字符串: 12_3 或 12_3+14_1+16_3-400_2 数字可能不同,但我要寻找的是X_X数字模式。但是,我需要做一个替换,搜索2_3,而不是返回12_3作为有效匹配 +/-是符号,可以是任何有效值。它们也不是必需的(在第一个示例中)。。所以,我可能想检查一个只有12_3的字符串,如果我传入2_3,它将不会返回匹配。除非我通过12级考试 这是一个C#脚本 非常感谢您的帮助!!我是regex傻瓜。好的,我们有,即: 2_3 +12_3+14_1+16_3-400_2+2_

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

12_3

12_3+14_1+16_3-400_2

数字可能不同,但我要寻找的是X_X数字模式。但是,我需要做一个替换,搜索2_3,而不是返回12_3作为有效匹配

+/-是符号,可以是任何有效值。它们也不是必需的(在第一个示例中)。。所以,我可能想检查一个只有12_3的字符串,如果我传入2_3,它将不会返回匹配。除非我通过12级考试

这是一个C#脚本

非常感谢您的帮助!!我是regex傻瓜。

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

regexp#1:

找到匹配项:

[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:

找到匹配项:

[0][0]=12_3

[1] [0]=14_1

[2] [0]=16_3

[3] [0]=400_2


这就是你要找的吗?

\b\d+\ud+\b

\d
是数字,
\b
是零宽度字边界。看这个


更新:我刚找了一份“C#regex备忘单”来验证
\b
是单词边界(在grep中是
\
)。这是第一个结果。我实际上并没有核实文本。无论如何,我现在链接到一个不同的备忘单。

我不理解太多的“问题”只不过是要求我们为您做工作。通过阅读诸如精通正则表达式之类的好书或RegEx Buddy之类的软件,有很多方法可以学习正则表达式。无论哪种方式,都没有理由在不显示您试图首先创建的任何表达式的情况下问正则表达式问题。@Frazell-这是该用户的第五个问题,也是他/她的第一个正则表达式问题。如果你认为有一个普遍的问题,请开始一个问题,但这里基本上是噪音。谢谢!我有一个与你的第二个相似的模式,但我不知道是否需要根据uz左右两侧的数字计数来做多个模式。。非常有帮助!看,我知道我在找什么号码。。例如,我知道在我的字符串中,我将查找2_3。。因此,当我使用模式\b2\u 3时,它会在字符串12\u 3+2\u 3+122\u 3中找到正确的“2\u 3”。。但我真的不明白为什么?!:)“在单词字符之间的位置匹配”。。我猜它认为12_3是一个单词,+是一个分隔符?不要介意那个备忘单
\b
匹配后跟单词字符但不后跟一个(单词开头)或后跟单词字符但不后跟一个(单词结尾)的位置。另一个字符(如果有)可以是空格、标点符号或任何非“单词字符”(即字母或数字,或连接标点符号,如下划线)的字符
\b2\u 3
不匹配
12\u 3
,因为
\b
必须在两个单词字符
1
2
之间匹配@extreme:如果你知道你的数字,你应该能够做到这一点:
\b2\u 3\b
Regex r1 = new Regex(@"\d+(\d_\d)");
MatchCollection mc = r1.Matches(sourcestring);
Regex r2 = new Regex(@"\d+\d_\d");
MatchCollection mc = r2.Matches(sourcestring);