首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在特殊字符之前只得到单词

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

Stack Overflow用户
提问于 2012-05-11 11:38:01
回答 4查看 176关注 0票数 0

我有医疗部门的“块状”判决的文件。

这些句子看上去如下:

“ADVP再次/RB NP是/VBZ。 NP诊断/JJ乳房X线/NN左/DT/JJ乳房/NN。

我只需要从这些“块”中提取单词的方法。所有句子的共同规则是,单词放在'/‘字符之前。

是否可以选择组合REGEX或其他东西以获得不带POS的字符串?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-11 11:57:51

这似乎是可行的:

代码语言:javascript
复制
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);

=>“再一次看到是一个焦点不对称”

票数 1
EN

Stack Overflow用户

发布于 2012-05-11 12:12:02

找到所有匹配的这个正则表达式。

代码语言:javascript
复制
\w+(?=/)

我在RegexPal.com上测试过。很有魅力。

判决非常简单。它匹配单词(\w+)和/,而不将/作为匹配的一部分。这样就不需要处理捕获组之类的问题。它与(?=/)进行‘后跟’匹配,实质上匹配一个紧跟在/后面的点。这就是所谓的前瞻

下面是一些示例代码:

代码语言:javascript
复制
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);
}

输出:

代码语言:javascript
复制
again
seen
is
a
focal
asymmetry
票数 3
EN

Stack Overflow用户

发布于 2012-05-11 11:42:01

你又在寻找一种RegEx匹配,看到,is,a,对称和诊断,乳房摄影,的,左,乳房。

对吗?

然后..。/\b(\w+)//应起作用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10550610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档