正则表达式提取数字字符串

时间:2011-10-12 08:40:18

标签: c# .net regex

嗨我对正则表达式感觉不太好。 我想要实现的是从输入字符串中提取数字子字符串(只有0-9位数)。

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

示例性输入:

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

输出:

435223

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

5 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:1)

试试这个正则表达式:

^(?:[; ]?)(?:.*?)([0-9]+);$

答案 2 :(得分:1)

使用^.*[ ;](\d+)[;\n]?$将捕获您感兴趣的数字,尽管您可能需要将\ n更改为\ r \ n,具体取决于输入文件的行结尾。

答案 3 :(得分:0)

正则表达式应为:

"[; ]{1}[0-9]+($|[^0-9]+)"

答案 4 :(得分:0)

尝试使用此表达式

(\d+\.?\d*|\.\d+)