嗨我对正则表达式感觉不太好。 我想要实现的是从输入字符串中提取数字子字符串(只有0-9位数)。
;
),空格()或应该恰好放在开头
输入(不是行)。 ;
),行尾或输入字符串的结尾。示例性输入:
;x; ;SrvId=3993;ad257c823; 435223;
输出:
435223
我试过:[ \A|;|[ ]]\d*[\r|;|\Z]
但它没有用,它甚至没有编译。
答案 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+)