在特殊字符之前只得到单词

本文关键字:单词 特殊字符 | 更新日期: 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());