日语句子正则表达式分别捕获标点符号

时间:2013-10-17 21:34:40

标签: ruby regex

我正在尝试使用正则表达式将日语文本块分隔成单个句子。现在我主要在rubular进行实验,但这是我到目前为止所做的。

正则表达式:/(.*?(。|?|!))/

示例文本

  

强面のため周囲の人から敬远されている主人公が,クラスメイトと共通の话题を持とうとVRMMORPG「アナザーワールド」のベータテストに申し込んだ。ところが当选したのは彼一人。しかたなくひとりでゲーム内の仮想世界「イストピア」に「ケイオス」と名乘って乘り込んだが,そこはゲームでありながら五感すべてを体感でき,现実と间违えるほどのリアルな世界だった。サポートAIのテミスの协力を得つつ,クエストをこなしていったが,実はそこは本物の异世界「イストピア」であり,ケイオスのこなしたクエストによって,多くの人が影响を受けて......というお话。その戏言,闻き饱きたわ!あれ,ここにあった笔入れはどこにやったの?

我获得的结果是正确的,但它也单独匹配标点字符matches

如何改进正则表达式,使标点符号不单独匹配?

2 个答案:

答案 0 :(得分:3)

使用(.*?[。?!])似乎可以解决问题,请查看rubular

Match 1
1.  強面のため周囲の人から敬遠されている主人公が、クラスメイトと共通の話題を持とうとVRMMORPG「アナザーワールド」のベータテストに申し込んだ。
Match 2
1.  ところが当選したのは彼一人。
Match 3
1.  しかたなくひとりでゲーム内の仮想世界「イストピア」に「ケイオス」と名乗って乗り込んだが、そこはゲームでありながら五感すべてを体感でき、現実と間違えるほどのリアルな世界だった。
Match 4
1.  サポートAIのテミスの協力を得つつ、クエストをこなしていったが、実はそこは本物の異世界「イストピア」であり、ケイオスのこなしたクエストによって、多くの人が影響を受けて……というお話。
Match 5
1.  その戯言、聞き飽きたわ!
Match 6
1.  あれ、ここにあった筆入れはどこにやったの?

答案 1 :(得分:0)

这个怎么样?

str.scan /[\p{Han}\p{Katakana}\p{Hiragana}\p{Hangul}[[:punct:]]]+/
=> ["強面のため周囲の人から敬遠されている主人公が、クラスメイトと共通の話題を持とうと",
 "「アナザ",
 "ワ",
 "ルド」のベ",
 "タテストに申し込んだ。ところが当選したのは彼一人。しかたなくひとりでゲ",
 "ム内の仮想世界「イストピア」に「ケイオス」と名乗って乗り込んだが、そこはゲ",
 "ムでありながら五感すべてを体感でき、現実と間違えるほどのリアルな世界だった。サポ",
 "ト",
 "のテミスの協力を得つつ、クエストをこなしていったが、実はそこは本物の異世界「イストピア」であり、ケイオス    のこなしたクエストによって、多くの人が影響を受けて……というお話。その戯言、聞き飽きたわ!あれ、ここにあった筆入れはどこにやったの?"]

http://rubular.com/r/8CtYuV8AAl