在特殊字符之前只得到单词
本文关键字:单词 特殊字符 | 更新日期: 2023-09-27 18:34:03
我有来自医疗部门的"块状"句子的文件。
这些句子看起来像:
" [ADVP Again/RB ] [VP seen/VBN ] [NP is/VBZ ] [NP a/DT focal/JJ 不对称/NN ]。
" [NP 诊断/JJ乳房 X 光检查/NN ] [PP 的/IN ] [NP 的/DT 左/JJ 乳房/NN ]。
我需要仅从这些"块"中提取单词的方法。所有句子的共同规则是单词在"/"字符之前。
是否可以选择组合 REGEX 或其他东西以获得没有 POS 的字符串?
谢谢
查找此正则表达式的所有匹配项。
'w+(?=/)
我在 RegexPal.com 测试了它。像魅力一样工作。
正则表达式非常简单。它匹配单词('w+
)后跟一个/
,而不使/
成为匹配的一部分。这消除了处理捕获组等的需要。它与(?=/)
进行"后跟"匹配,这基本上匹配一个紧跟/
的点。这称为前瞻。
下面是一些示例代码:
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);
=> "再次看到的是焦点不对称"
您正在搜索正则表达式匹配项再次,看到,是,A,对称和诊断, 乳房 X 光检查, 的, 的, 左, 乳房
右?
那么.../''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());