您好,我不太喜欢正则表达式。 我想要实现的是从输入字符串中提取一个数字子字符串(只有 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/