首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >替换所有字符和前0(零)

替换所有字符和前0(零)
EN

Stack Overflow用户
提问于 2012-12-31 02:53:44
回答 4查看 638关注 0票数 0

我正在尝试替换正则表达式中除数字以外的所有字符,但数字不应以0开头

如何使用正则表达式来实现这一点?

我尝试过多种方法,比如@"^([1-9]+)(0+)(\d*)""(?<=[1-9])0+",但这些都不起作用

文本的一些示例可以是hej:\\\\0.0.0.22hej:22hej:\\\\?022hej:\\\\?22,并且所有位置的结果都应该是22

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-31 03:00:12

与其替换,不如尝试与字符串上的[1-9][0-9]*$进行匹配。抓取匹配的文本。

请注意,如果使用\d,则由于.NET正则表达式匹配Unicode数字字符,因此这里的正则表达式将匹配内容限制为一个简单的字符类。

(注意:正则表达式仅在行尾假定匹配)

票数 1
EN

Stack Overflow用户

发布于 2012-12-31 04:20:45

根据您的一条评论,hej:\\\\0.011.0.022应该生成110022。首先选择从第一个非零数字到最后一个非零数字的相关字符串部分:

代码语言:javascript
运行
复制
([1-9].*[1-9]\d*)|[1-9]

[1-9]*是第一个非零数字。

.**是任意数量的字符。

[1-9]\d*是从第一个非零数字开始的数字

|[1-9]规则仅包含一个非零数位的情况

然后删除所有非数字(\D)

代码语言:javascript
运行
复制
Match match = Regex.Match(input, @"([1-9].*[1-9]\d*)|[1-9]");
if (match.Success) {
    result = Regex.Replace(match.Value, "\D", "");
} else {
    result = "";
}
票数 1
EN

Stack Overflow用户

发布于 2012-12-31 03:08:32

使用以下内容

代码语言:javascript
运行
复制
[1-9][0-9]*$

你不需要做任何递归,只要匹配就行了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14093581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档