你好,我对正则表达式并不熟悉。我的目标是从输入字符串中提取一个数字子字符串(只包含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+|;)
正向先行断言:输入的开头或至少一个空格字符或一个分号。
(\d+) 至少一个数字
(?=$|;|\Z)
正向后行断言:行末或分号或输入结尾。
输入:;x; ;SrvId=3993;ad257c823; 435223;
第1组输出:435223
尝试使用这个正则表达式:
^(?:[; ]?)(?:.*?)([0-9]+);$
使用^.*[ ;](\d+)[;\n]?$
可以捕获您感兴趣的数字,尽管您可能需要根据输入文件的行结尾将\n更改为\r\n。
正则表达式应该是这样的:
"[; ]{1}[0-9]+($|[^0-9]+)"
尝试使用这个表达式
(\d+\.?\d*|\.\d+)