字符串按单词和排队标点符号分割

3

这是我现在使用的模式:

string pattern = @"^(\s+|\d+|\w+|[^\d\s\w])+$";

Regex regex = new Regex(pattern);
if (regex.IsMatch(inputString))
{
      Match match = regex.Match(inputString);

      foreach (Capture capture in match.Groups[1].Captures)
      {
           if (!string.IsNullOrWhiteSpace(capture.Value))
               tmpList.Add(capture.Value);
      }
 }
 return tmpList.ToArray<string>();

使用此方法可以检索字符串数组,每个单词和每个标点符号都是一个项目。

现在我想要实现的是将排队的标点符号组合成一个项目,即如果现在有三个点紧挨着出现,那么我的数组中将会有三个包含点的项目。最终,我希望只有一个包含三个点(或任何其他标点符号)的项目。

2个回答

6

尝试使用这个正则表达式:

^(\s+|\d+|\w+|[^\d\s\w]+)+$

Description

Regular expression visualization


请问您是如何构建这个整洁的模式的? - Louitbol

3

尝试使用以下模式。我增加了一个额外的 + 号。如果您有其他意图,请告诉我。希望它能帮助到您。

string pattern = @"^(\s+|\d+|\w+|[^\d\s\w]+)+$";

对于输入字符串 inputString = "abc;..cbe;aaa...kjaskjas",我得到了以下结果:
abc
;..
cbe
;
aaa
...
kjaskjas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接