我有这段文字:
" </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/

10-10 02:04