繁体   English   中英

Ruby中的正则表达式

[英]Regular expressions in Ruby

我有一个看起来像这样的外部文本文件:

This_ART is_P an_ART example_N.
Thus_KONJ this_ART is_P a_ART part_N of_PREP it_N.

现在,我想在Ruby中打开此文件,并使用每个带注释的单词创建一个数组。 我的尝试如下所示:

def get_entries(file)
  return File.open(file).map { |x| x.split(/\W+_[A-Z]+/) }
end

但是执行只是返回一个以每个句子为成员的数组:

[["This_ART is_P an_ART example_N.\n"],["Thus_KONJ this_ART is_P a_ART part_N of PREP it_N.\n"]]

标点和转义字符都包括在内。 错误在哪里,或者我必须更改以获得正确的阵列?

尝试只扫描所需的内容,例如

return File.read(file).scan(/\w+_[A-Z]+/)

那会给你类似的东西:

["This_ART", "is_P", "an_ART", "example_N", "Thus_KONJ", ...]

如果要删除注释部分,可以继续进行以下操作:

.map{ |w| w.gsub(/_[A-Z]+\z/, '') }

请注意\\ w是单词字符,\\ W是非单词字符

/\W+_[A-Z]+/

仅在_前面有非单词字符时才匹配,字符串中的情况并非如此。

我不完全知道结果如何,但是请尝试以下操作:

/_[A-Z]+\W*/

沿着这个正则表达式分割给你

["This", "is", "an", "example", "Thus", "this", "is", "a", "part", "of", "it"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM