2015-04-15 1 views
1

У меня есть следующая строка, где каждое слово имеет POS (part-of-speech) тег:Удалить POS (часть-из-речь) тег из каждого слова в предложении с RegEx

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 ./. 

Как я могу удалить каждый POS тег (т.е. /DT, /NN, /IN, ..., /.) сразу с RegEx в коде C#?

+0

Добавлено объяснение того, что POS является, фиксированной капитализации. – GreyCat

ответ

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

+0

Спасибо. Он работает отлично. –

+0

Добро пожаловать, но для того, чтобы избежать вопросов, связанных с закрытием/удалением/downvoting, добавьте свои собственные усилия в орган вопросов. –

+0

Сэр, спасибо за ваше напоминание. Я столкнулся с новой проблемой: ее/PRP $ leg/NN/VBZ ранен/VBN ./. Один из тегов состоит из знака доллара. Как мне изменить выражение для его удаления? –

Смежные вопросы