c# - 正则表达式提取数字字符串

标签 c# .net regex

您好,我不太喜欢正则表达式。 我想要实现的是从输入字符串中提取一个数字子字符串(只有 0-9 位数字)。

  • 搜索的数字字符串前面应该只有一个 分号 (;)、空格 ( ) 或应恰好放在开头 输入(不是行)。
  • 搜索的数字字符串后应仅跟一个分号 (;)、行尾或输入字符串的结尾。

示例输入:

;x; ;SrvId=3993;ad257c823; 435223;

输出:

435223

我试过:[\A|;|[ ]]\d*[\r|;|\Z] 但它没有用,它甚至没有编译。

最佳答案

试试这个:

string resultString = null;
try {
    resultString = Regex.Match(subjectString, @"(?<=\A|\s+|;)(\d+)(?=$|;|\Z)").Groups[1].Value;
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}

分解:

(?<=\A|\s+|;)

Posiive lookbehind:输入的开始或至少一个空白字符或一个分号。

(\d+) 至少一位数

(?=$|;|\Z)

行尾、分号或输入的正向前瞻。

输入:;x; ;SrvId=3993;ad257c823; 435223;

第 1 组的输出:435223

关于c# - 正则表达式提取数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7737336/

相关文章:

c# - C# .net windows 形式的波斯日期时间选择器

c# - Windows Phone 8 映射 XAMLParseException

c# - LINQ 实体数据模型生成的代码错误 - 类型 'DBContexts.Category' 已包含 'ID' 的定义

regex - Lua 正则表达式,只有一个匹配项

C# 互操作 - 迭代行并删除

c# - 在 .NET 应用程序中在哪里设置默认区域性

c# - 防止 WPF 4.0 Datagrid 显示空列

javascript - 这可以用正则表达式来完成吗?在字符串中找到我的 key

javascript - JS-正则表达式不工作

c# - 如何在C#中使用EPPLUS的一个对象多次写入excel