用于提取数字字符串的正则表达式
本文关键字:正则表达式 字符串 数字字符 提取 数字 用于 | 更新日期: 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+)