用于提取数字字符串的正则表达式

本文关键字:正则表达式 字符串 数字字符 提取 数字 用于 | 更新日期: 2023-09-27 18:11:06

你好,我对正则表达式感觉不太好。我想要实现的是从输入字符串中提取数字子字符串(只有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
}

分解:

(& lt; = ' ' s + | |;)

正面向后看:输入的开始或至少一个空白字符或分号。

('d+)至少一个数字

(? = $ |; | ' Z)

正向前看:行尾、分号或输入的和。

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

第1组输出:435223

试试这个regex:

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

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

正则表达式应该是这样的:

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

尝试使用这个表达式

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