簡體   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