Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于拆分字符串的高级正则表达式_C#_Regex - Fatal编程技术网

C# 用于拆分字符串的高级正则表达式

C# 用于拆分字符串的高级正则表达式,c#,regex,C#,Regex,我正在尝试编写一个高级的regrex,它将把我的字符串拆分到正确的位置 你还记得(T9)吗,你可以简单地用22022写“bb” 我需要类似的东西 我在空白处得到了拆分(实现了暂停),但其余部分确实很难 对于空白,它是 var l = Regex.Split(a, @"\s"); 但我需要以下内容:44204420442应该是44,2,0,44,2,0,44,2 因此,与前一个字符相比,该字符在更改后也会被拆分 提前谢谢你 您可以实现一个简单的循环,而不是复杂的正则表达式: public sta

我正在尝试编写一个高级的regrex,它将把我的字符串拆分到正确的位置

你还记得(T9)吗,你可以简单地用22022写“bb” 我需要类似的东西

我在空白处得到了拆分(实现了暂停),但其余部分确实很难

对于空白,它是

var l = Regex.Split(a, @"\s");
但我需要以下内容:
44204420442应该是44,2,0,44,2,0,44,2
因此,与前一个字符相比,该字符在更改后也会被拆分

提前谢谢你

您可以实现一个简单的循环,而不是复杂的正则表达式:

public static IEnumerable<String> MySplit(String value) {
  if (null == value)
    throw new ArgumentNullException("value");

  char prior = '\0';

  StringBuilder sb = new StringBuilder();

  foreach (char current in value) {
    if (sb.Length != 0 && prior != current) {
      yield return sb.ToString();

      sb.Clear();
    }

    if (!Char.IsWhiteSpace(current))
      sb.Append(current);

    prior = current;
  }

  if (sb.Length > 0)
    yield return sb.ToString();
}

与其拆分,不如更容易收集所有匹配项:

Regex regexObj = new Regex(@"(\d)\1*");
allMatchResults = regexObj.Matches(subjectString);

您需要查看每个
匹配项
对象的
组[0]。值
才能获得整个匹配项。

嘿!您的代码是否可以使用带空格的442442?我怎样才能把它改为工作that@EgertAia:如果您也希望在空白处拆分,则必须在中添加一个
(请参见我的编辑)
Regex regexObj = new Regex(@"(\d)\1*");
allMatchResults = regexObj.Matches(subjectString);