C# 在c中按字符限制正则表达式

C# 在c中按字符限制正则表达式,c#,regex,C#,Regex,我得到以下模式\s\w+,我需要用空格匹配字符串中的每个单词 比如说 many word in the textarea , must be happy 当我有这根绳子的时候 many word in the textarea must be happy 我明白了 这是正确的,但是当我有另一个角色时,例如 many word in the textarea , must be happy 我明白了 但是必须高兴应该被忽略,因为我希望它在字符串中有另一个字符时中断 编辑: 例2 all ca

我得到以下模式\s\w+,我需要用空格匹配字符串中的每个单词

比如说

many word in the textarea , must be happy
当我有这根绳子的时候

many word in the textarea must be happy
我明白了

这是正确的,但是当我有另一个角色时,例如

many word in the textarea , must be happy
我明白了

但是必须高兴应该被忽略,因为我希望它在字符串中有另一个字符时中断

编辑:

例2

all cats  { in } the world are nice
应该还

all
cats
My
3
cats
are
因为{对我来说是另一个分隔符

例3

My 3 cats are ... funny
应该还

all
cats
My
3
cats
are
因为3是字母数字,.是我的分隔符


我能做什么?

一体式正则表达式:-结果在列表中

试试这个。抓取捕获或匹配。请参阅演示。为多行模式设置标志m

见演示


我认为Sam I Am的评论是正确的:需要两个正则表达式

捕获最多为非单词字符的文本。 用空格捕捉所有单词。 以下是相应的代码:

^\\w+\\s++ \\w+\\s+ 您可以将这两种方法结合起来,非常容易地捕获单个单词,就像这样

^\\w+\\s++

下面是一段完整的代码,演示了该模式:

string input = "many word in the textarea , must be happy";

string pattern = "^(\\w+\\s+)+";

Match match = Regex.Match(input , pattern);

// Never returns a NullReferenceException because of GroupsCollection array indexer - check it out!
foreach(Capture capture in match.Groups[1].Captures)
{
    Console.WriteLine(capture.Value);
}
编辑


请查看Casimir et Hippolyte,以获得一个非常清晰的答案。

要做到这一点,您需要使用与字符串开头或最后一次匹配后的位置相匹配的\G锚点。因此,您可以使用此模式:

@"(?<=\G\s*)\w+"

你可以使用锚符号。^表示输入的开始,$表示输入的结束。如果你运行2个正则表达式,这将是最简单的。你可以在处理前将字符串拆分为“,”@SamIam,当我添加^和$^\s\w+$该模式找不到任何单词。因此,如果你想选择逗号之前的所有内容,请执行^.*,我们有赢家了!哦,TXS^\s\w++匹配在我的条件下字符串的正确长度,但是像1字符串一样返回bla bla bla bla,但是您的模式返回'bla''bla''bla'I not vote,但是我认为这是因为PHP的示例
@"(?<=\G\s*)\w+"