2012-05-11 3 views
0

У меня есть файл с «chunked» предложениями из медицинского сектора.Получить только слово до специального char

Приговоры выглядит следующим образом:.

»[ADVP снова/RB] [VP видел/VBN] [НП/VBZ] [NP в/DT фокусного/JJ асимметрии/NN]

"[NP диагностика/маммограмма JJ/NN] [PP of/IN] [NP the/DT left/JJ грудь/NN].

мне нужен способ, чтобы извлечь только слова из этих «кусков». Общее правило для всех предложений состоит в том, что слова предшествуют символу//.

Есть ли возможность объединить REGEX или что-то еще, чтобы получить строку без POS?

Благодаря

ответ

1

Это похоже на работу:

var patt = @"\s(\b(.+?))/"; 
var matches = Regex.Matches("[ADVP again/RB ] [VP seen/VBN ] [NP is/VBZ ] [NP a/DT focal/JJ asymmetry/NN ].", patt); 

var matchedValues = matches 
    .Cast<Match>() 
    .Select(match => match.Groups[1].Value); 

var output = string.Join(" ", matchedValues); 

=> "снова увидеть это очаговый асимметрия"

+0

Спасибо! Прекрасно работает!!! – AlexBerd

0

Вы ищете RegEx сопоставления снова, видно, есть, симметрия и диагностики, mammogramm, из, то слева, грудь

правильно?

Тогда .../\ Ь ([\ ш] +) // должны работать

+0

Да Я ищу Regex, который будет преобразовывать первое предложение простой строки, которая содержит: снова видело это очаговая симметрия. – AlexBerd

3

Найти все совпадения данного регулярного выражения.

\w+(?=/) 

Я проверил его на RegexPal.com. Работал как шарм.

Регулярное выражение очень простое. Он соответствует словам (\w+), а затем / без принятия / части матча. Это устраняет необходимость иметь дело с группами захвата и т. Д. Он соответствует следующему совпадению с (?=/), который по существу соответствует точке, за которой сразу следует /. Это называется lookahead.

Вот некоторые примеры кода:

string sentence = "[ADVP again/RB ] [VP seen/VBN ] [NP is/VBZ ] [NP a/DT focal/JJ asymmetry/NN ]."; 
MatchCollection matches = Regex.Matches(sentence, @"\w+(?=/)"); 
foreach (Match match in matches) 
{ 
    Console.WriteLine(match.Value); 
} 

Выход:

again 
seen 
is 
a 
focal 
asymmetry 
0

Попробуйте это.

var val = "[ADVP again/RB ] [VP seen/VBN ] [NP is/VBZ ] [NP a/DT focal/JJ asymmetry/NN ]";  
var list = val.Split('/').Select(c => c.Split(' ').Last()); 
Смежные вопросы