我有这段文字:" </SYM field/NN name=/IN ""/"" object/NN ""/"" >/SYM Categories/NNS :/: Cars/NNS ,/, About/RB Model/NNP :/: "
我想提取诸如Categories/NNS :/: Cars/NNS ,/, About/RB
模式在哪里
WORD + /NNS + :/: ANYTHING
,直到达到相同的模式
我试过了:
Match match = Regex.Match(input, @"([A-Za-z0-9\-]+)/NNS :/: ([A-Za-z0-9\-/s]+)",
RegexOptions.IgnoreCase);
if (match.Success)
{
string key = match.Groups[1].Value;
Console.WriteLine(key);
}
我得到的答案是:
Categories
代替
Categories/NNS :/: Cars/NNS ,/, About/RB
我做错了什么?
最佳答案
您需要将所需的正则表达式的位括在括号内。
为了获得您想要的东西,您需要用以下内容替换正则表达式(未经测试,而且我不知道C#正则表达式的具体细节,但是下面应该可以):
"((?:[A-Za-z0-9\-]+)/NNS :/: (?:[A-Za-z0-9\-/s]+))"
主要括号表示您将获得整个字符串作为结果。
左括号后跟?:表示您不希望结果中包含该部分。
如果不输入?:,则将导致整个字符串都成为元组,然后是与第一个子正则表达式匹配的字符串,然后是与第二个子正则表达式匹配的字符串。
关于c# - C#中用于提取零件的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20413125/