C# 在空格之间匹配单词的正则表达式
我需要一个匹配以下内容的正则表达式(括号表示我要匹配此部分,它们不在要匹配的实际字符串中!): 我尝试了以下方法:C# 在空格之间匹配单词的正则表达式,c#,regex,C#,Regex,我需要一个匹配以下内容的正则表达式(括号表示我要匹配此部分,它们不在要匹配的实际字符串中!): 我尝试了以下方法: (?试试看 (?这对我有用 [0-9]+\s([a-z \s]+)\s\s (?那么您的最终输出应该是什么?许多正则表达式实现不支持没有明显长度的look behind,甚至不支持可变长度的look behind,所以很可能是[0-9]+内部的(?对不起,忘了。我使用的是C,根据维基和它自己的文档都支持,look back和look aheads。我的最终输出应该是上面示例中标记
(?试试看
(?这对我有用
[0-9]+\s([a-z \s]+)\s\s
(?那么您的最终输出应该是什么?许多正则表达式实现不支持没有明显长度的look behind,甚至不支持可变长度的look behind,所以很可能是[0-9]+
内部的(?对不起,忘了。我使用的是C,根据维基和它自己的文档都支持,look back和look aheads。我的最终输出应该是上面示例中标记为[]的部分。(当然不包括括号,那太简单了,嗯?:()我不怀疑它是否会支持look behind,但look behind内部支持“可变宽度”。我不确定C是否支持这一点。许多正则表达式实现不支持没有明显长度,甚至没有可变长度的look behind,所以可能是[0-9]+
内部(?工作得很好,但现在我有了一种奇怪的行为,有时一个单词的最后一个字母没有被选中,例如:[一些单词]s和[更多单词]s@ApoY2k,只需抓取第1组中匹配的内容。
(?<=[0-9]+\s)([a-z]+\s)*[a-z]+(?!\s{2,})
[0-9]+\s([a-z \s]+)\s\s
1: ( open group 1
2: ?<=\d\s look, if a digit followed by a whitespace are before group 2
3: ) close group 1
4: ( open group 2
5: [a-zA-Z]+\s match any words / letters that are followed by a whitespace
6: )* close group 2 and let it repeat or not even be there
7: [a-zA-Z]+ match any words / letters and let them repeat one or more times