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