正则表达式,用于从最小到最大的任何字符组

时间:2018-12-25 07:09:45

标签: c# regex

尝试创建所有字母,数字和标点符号的字符类,然后指定其范围,但不起作用。 [A-Za-z0-9 _.- \,] {,5}

我正在尝试匹配一个范围从一个限制到另一个限制的“任何字符”的组,例如使用字母[A-Za-z] {,5}进行的同类匹配。但是问题是这仅适用于字母或数字,但是我希望我的表达式匹配任何字符(标点,字母,数字)。

我尝试了诸如“。{,5}”和“(。*?)”之类的东西,但它的范围不受限制,因此可以匹配两者之间的所有内容。

string pattern = @"[A-Za-z0-9]{,10}";
MatchCollection matches = Regex.Matches(text,pattern);
foreach(var match in matches)
{
     MessageBox.Show(match.Value.ToString());
}

例如,我要匹配字符串“ Estragon_NN,_,sitting_VBG [PRESP]”中“ NN”后{,10}的所有内容,但结果只返回“ NN”

1 个答案:

答案 0 :(得分:1)

您可以使用

string pattern = @"([^_]+)_NN(?<capturedGroup>[a-zA-Z0-9_\[\],\s]{0,10})";
var matches = Regex.Match("Estragon_NN,_,sitting_VBG [PRESP]",pattern);
var result = matches.Groups["capturedGroup"].Value;

可以在这里验证 https://regex101.com/r/OVyZ3b/1