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

C# 查找数字的字符串正则表达式

C# 查找数字的字符串正则表达式,c#,C#,我对正则表达式有问题。 我有电话 折叠|复制代码 string regex4 = @"\d{4,6}[^-]"; 合同编号123456,注册编号654321-118 我想使用只查找字符串123456的正则表达式,但找不到第二个6位-3位字符串(654321-118) 这就是我想到的,但我真的不知道下一步该怎么办 折叠|复制代码 string regex4 = @"\d{4,6}[^-]"; 有什么想法吗? 多谢各位 ---逗号不是特定的,我想我需要构建正则表达式,这样它就不会找到以“-”结尾

我对正则表达式有问题。 我有电话 折叠|复制代码

string regex4 = @"\d{4,6}[^-]";
合同编号123456,注册编号654321-118

我想使用只查找字符串123456的正则表达式,但找不到第二个6位-3位字符串(654321-118)

这就是我想到的,但我真的不知道下一步该怎么办 折叠|复制代码

string regex4 = @"\d{4,6}[^-]";
有什么想法吗? 多谢各位

---逗号不是特定的,我想我需要构建正则表达式,这样它就不会找到以“-”结尾的字符串


---这是银行“收款人信息”字段中的付款详细信息。有两组可能的数字xxxxxx和xxxxxx-xxx,我只需要找到第一组。

有点粗糙,但如果它是纯数字,只有你关心的,只有它的第一次出现,那么你可以做一些简单的事情,比如

const string stuff = "Contract Nr.123456,reg.Nr.654321-118";

var regex = new Regex(@"\d+");

Console.WriteLine(regex.Match(stuff).Value);

有很多方法可以做到这一点。例如,您可以同时匹配\d+和\d+-\d+,然后只选择\d+个。尽管如此,我还是喜欢向前看和向后看的方法(注意:为了可读性,我引入了换行符和注释,它们应该是remover)

(?
因此,您的正则表达式看起来像:

const string stuff = "Contract Nr.123456,reg.Nr.654321-118";
var rx = new Regex(@"(?<!\d+-\d*)\d+(?!\d*-\d+)");
Console.WriteLine(rx.Match(stuff).Value);
// result: 123456
const string stuff=“合同编号123456,注册编号654321-118”;

var rx=new Regex(@)(?您的Regex是正确的…如果总是有两个这样的组,并且您只想找到第一个组,那么以后就不要搜索第二个组…
Regex.Match()
将在字符串中找到模式的第一个出现,然后(不)使用
Match.NextMatch()
获取下一次出现。否则,您可以使用负前瞻:
\d{4,6}(?)
(如果4-6位在字符串末尾,您的原始正则表达式将失败,因为它需要一个非
-
的字符跟随。)
const string stuff = "Contract Nr.123456,reg.Nr.654321-118 and 435345";
var rx = new Regex(@"(?<!\d+-\d*)\d+(?!\d*-\d+)");
var m = rx.Match(stuff);
while (m.Success)
{
    Console.WriteLine(m.Value);
    m = m.NextMatch();
}
// result: 123456 and 435345