猿问

正则表达式在 C# 中拆分字符串

我有一个字符串输入,如:

var input = "1. J. Carter 2. Mark R. 1000. Axl"

可以有任意数量的名称,但关键是我需要将此字符串拆分为这样的数组

  • J·卡特

  • 马克 R。

我认为应该有一种方法可以用正则表达式来做到这一点,但我对这个主题完全陌生,所以我非常感谢你的帮助。


萧十郎
浏览 318回答 3
3回答

有只小跳蛙

你当然可以用正则表达式来做到这一点。这应该适合你:var&nbsp;names&nbsp;=&nbsp;new&nbsp;Regex(@"\d+\.\s+([^\d]+)").Matches(input) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Cast<Match>() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Select(m&nbsp;=>&nbsp;m.Groups[1].Value); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ToList();将\d+一个或多个数字相匹配。该\.文字匹配的.字符。本\s+场比赛的一个或多个空格字符。将()创建一个捕获组。本[^\d]+场比赛的一个或多个非数字字符(基本名称)。

慕尼黑5688855

这对我来说是一个正则表达式:((?<Number>\d+)\.\s+)(?<Name>[a-zA-Z\.\s]+)(\s*)对于每场比赛,您会得到一个名为“Number”的组,其中包含一个或多个数字 (the&nbsp;\d+),以及一个名为“Name”的组,其中包含您要查找的名称。在[a-zA-Z\.\s]+与名称相关联的说,任何数量的大写或小写字母,点或空格。在\.\s+一个点后面跟着一个或多个空格,而结尾写着”(\s*)吞任何可能尾随空格。解析您的字符串,我得到三个匹配项,以及您期望的数字和名称。
随时随地看视频慕课网APP
我要回答