【问题标题】:Series of Starting and Ending Index for Specific pattern of substring in C#C#中子字符串特定模式的开始和结束索引系列
【发布时间】:2013-06-16 17:14:55
【问题描述】:
string str = "AAA  AAAAA    AA"

我需要找出 AAA,AAAAA,AA 的开始和结束索引。在上面的例子中,索引是 (1,3),(6,10),(14,16)。是否有可能实现这一目标 通过使用正则表达式

【问题讨论】:

  • 最后一对不是 (14,15) 吗?你真的想从 1 而不是 0 开始索引吗?
  • 匹配第一个和最后一个字符的正则表达式看起来像this:(\S)(?:\S*(\S))?。不知道C#能不能给你它的索引。
  • 感谢您的回复。正确的索引号对我来说是可以的。我对上述示例的索引计算是错误的。
  • @HamZa - 可能有更多不同长度的子串,它们之间有更多的空格。
  • @vicage \SS 大写 匹配除空白以外的任何内容。我在demo 中添加了一些 cmets。由于您没有指定 A 可能是什么,因此它甚至会匹配 ###

标签: c# .net regex indexing substring


【解决方案1】:

根据@HamZa的评论:你可以这样做:

var r = new Regex(@"(\S)(?:\S*(\S))?");
var input = "AAA  AAAAA    AA";
var clusterPositions = r.Matches(input).Cast<Match>()
                        .Select(m => new{start = m.Index, 
                                           end = m.Index + m.Length});

【讨论】:

  • 如果还有一个条件来检查子字符串的长度是否应该等于或大于4
  • @vicage 接受这个答案,做一些研究。如果您遇到困难,请换一个新的。
  • 当然 HamZa.. 感谢您的及时回复。
  • @vicage 既然心情好,我马上给你(\S)\S{2,}(\S)See it working.
猜你喜欢
  • 2013-09-10
  • 1970-01-01
  • 2020-11-17
  • 2018-02-28
  • 2023-03-28
  • 2021-04-19
  • 1970-01-01
  • 2017-02-20
  • 2022-01-25
相关资源
最近更新 更多