首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配正则表达式并反转目标字符串中的匹配

匹配正则表达式并反转目标字符串中的匹配
EN

Stack Overflow用户
提问于 2011-07-08 10:34:48
回答 2查看 1.9K关注 0票数 1

基于this question正则表达式,\d+(?:-\d+)+将匹配此10-3-15-0

示例:

代码语言:javascript
复制
This is 10-3-1 my string

在执行匹配和反转之后,我希望它是这样的:

代码语言:javascript
复制
This is 1-3-10 my string

请注意,10-3-1应该变成1-3-10,而不是正常的字符串反转,这将导致1-3-01。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-08 10:44:47

一个基本的算法是:

  1. 从字符串中提取匹配项。"10-3-1"
  2. 通过"-“字符将匹配拆分成多个段。
  3. 现在您有了一个元素列表。["10","3","1"]
  4. 颠倒了这个列表。["1","3","10"]
  5. 使用"-“字符将数组的元素连接起来。"1-3-10"
  6. 将匹配替换为新加入的字符串。
票数 2
EN

Stack Overflow用户

发布于 2011-07-08 11:33:09

尽管问题已经在这里得到了回答,但这是一段略微修改了正则表达式的代码:

代码语言:javascript
复制
var text = "This is 10-3-1 and 5-2.";
var re = new Regex(@"((?<first>\d+)(?:-(?<parts>\d+))+)");
foreach (Match match in re.Matches(text))
{
    var reverseSequence = match
                            .Groups["first"]
                            .Captures.Cast<Capture>()
                            .Concat(match.Groups["parts"].Captures.Cast<Capture>())
                            .Select(x => x.Value)
                            .Reverse()
                            .ToArray();
    text = text.Replace(match.Value, string.Join("-", reverseSequence));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6619398

复制
相关文章

相似问题

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