使用RegEx从句子中的每个单词中删除POS(词性)标签

时间:2015-04-15 08:29:18

标签: c# regex

我有以下字符串,其中每个单词都有一个POS(part-of-speech)标记:

The/DT suburb/NN of/IN Saffron/NNP Park/NNP lay/VBD on/IN the/DT sunset/JJ side/NN of/IN London/NNP ,/, as/IN red/JJ and/CC ragged/VBD as/IN a/DT cloud/NN of/IN sunset/NN ./. 

如何使用C#代码中的RegEx一次删除每个POS标记(即/DT/NN/IN,...,/.)?

2 个答案:

答案 0 :(得分:1)

\/[A-Z.,]*

试试这个。empty string。见。演示。

https://regex101.com/r/sJ9gM7/109

答案 1 :(得分:0)

我想“立刻”是指使用Regex.Replace一次调用。您可以使用以下正则表达式安全地删除它们:

/(?:[.,]|\p{Lu}+\b)

在C#正则表达式中,您不必转义/

如果您想在/之后删除任何标点符号,您可以使用:

/(?:\p{P}|\p{Lu}+\b)

您需要使用string.Empty作为替换字符串。

var input = "The/DT suburb/NN of/IN Saffron/NNP Park/NNP lay/VBD on/IN the/DT sunset/JJ side/NN of/IN London/NNP ,/, as/IN red/JJ and/CC ragged/VBD as/IN a/DT cloud/NN of/IN sunset/NN ./.";
var rgxx = new Regex(@"/(?:[.,]|\p{Lu}+\b)");
var result = rgxx.Replace(input, string.Empty);

输出:

enter image description here