我有来自医疗部门的“分块”句子的文件。
句子看起来像:
" [再次ADVP/RB] [VP 看到/VBN] [NP 是/VBZ] [NP a/DT 焦点/JJ 不对称/NN]。
" [NP 诊断/JJ 乳房 X 线照片/NN] [PP of/IN] [NP 左/DT 左/JJ 乳房/NN]。
我需要从那些“块”中只提取单词的方法。所有句子的共同规则是单词在 '/' 字符之前。
是否可以选择组合 REGEX 或其他东西以获得没有 POS 的字符串?
谢谢
查找此正则表达式的所有匹配项。
\w+(?=/)
我在RegexPal.com对其进行了测试。像魅力一样工作。
正则表达式非常简单。它匹配单词 ( \w+
) 后跟 a/
而不进行/
匹配部分。这消除了处理捕获组等的需要。它与 'followed by' 匹配(?=/)
,本质上匹配紧随其后的点 a /
。这称为前瞻。
这是一些示例代码:
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
这似乎有效:
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);
=>“再次看到的是焦点不对称”
您正在再次搜索 RegEx 匹配,已看到,是,a,对称性和诊断性,乳房 X 光检查,of,the,left,breast
对?
然后... /\b([\w]+)// 应该可以工作
试试这个。
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());