我正在尝试替换正则表达式中除数字以外的所有字符,但数字不应以0开头
如何使用正则表达式来实现这一点?
我尝试过多种方法,比如@"^([1-9]+)(0+)(\d*)"和"(?<=[1-9])0+",但这些都不起作用
文本的一些示例可以是hej:\\\\0.0.0.22、hej:22、hej:\\\\?022和hej:\\\\?22,并且所有位置的结果都应该是22
发布于 2012-12-31 03:00:12
与其替换,不如尝试与字符串上的[1-9][0-9]*$进行匹配。抓取匹配的文本。
请注意,如果使用\d,则由于.NET正则表达式匹配Unicode数字字符,因此这里的正则表达式将匹配内容限制为一个简单的字符类。
(注意:正则表达式仅在行尾假定匹配)
发布于 2012-12-31 04:20:45
根据您的一条评论,hej:\\\\0.011.0.022应该生成110022。首先选择从第一个非零数字到最后一个非零数字的相关字符串部分:
([1-9].*[1-9]\d*)|[1-9][1-9]*是第一个非零数字。
.**是任意数量的字符。
[1-9]\d*是从第一个非零数字开始的数字
|[1-9]规则仅包含一个非零数位的情况
然后删除所有非数字(\D)
Match match = Regex.Match(input, @"([1-9].*[1-9]\d*)|[1-9]");
if (match.Success) {
result = Regex.Replace(match.Value, "\D", "");
} else {
result = "";
}发布于 2012-12-31 03:08:32
使用以下内容
[1-9][0-9]*$你不需要做任何递归,只要匹配就行了。
https://stackoverflow.com/questions/14093581
复制相似问题