こんにちは。

Rubyで正規表現で見つかった箇所の文字列を置換するプログラムを書いているのですが、
一部うまく作動せず、その原因が分からないため質問させていただきました。

以下プログラムの置換の部分になります。
49 case text
50 when /株式数(株)\t貸借対照表計上額(千円)|株式数(株)\t貸借対照表計上額(千円)/
51 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1}株\t#{$3},000円\t"}
52 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
53 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t(\d{1})/){|s| "#{$1}株\t#{$3}円\t"}
54 when/百万円/
55 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)/) {|s| "#{$1}株\t#{$3},000,000円\t"}
56 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
57 when /株式数(株)\t貸借対照表計上額(百万円)/
58 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)/) {|s| "#{$1}株\t#{$3},000,000円\t"}
59 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
60 when /株式数(株)\t貸借対照表計上額(百万円)/
61 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1}株\t#{$3},000,000円\t"}
62 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
63 when /株式数(1000株)\t貸借対照表計上額(百万円)/
64 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1},000株\t#{$3},000,000円\t"}
65 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
66 when /株式数(1000株)\t貸借対照表計上額(百万円)/
67 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1},000株\t#{$3},000,000円\t"}
68 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
69 when/株式数(1000株)\t貸借対照表計上額(百万円)/
70 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1},000株\t#{$3},000,000円\t"}
71 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
72 when/株式数(1000株)\t貸借対照表計上額(百万円)/
73 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1},000株\t#{$3},000,000円\t"}
74 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
75 when/株式数(株) 貸借対照表計上額(百万円)/
76 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1},株\t#{$3},000,000円\t"}
77 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
78 when/株式数(株) 貸借対照表計上額(百万円)/
79 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1},株\t#{$3},000,000円\t"}
80 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
81 end

以下は今のプログラムで出てくる結果です。
1つ目の数字の後ろに「株」、2つ目の数字の後ろに「,000円」がついています。

ハ保有目的が純投資目的である投資株式の前事業年度及び当事業年度における貸借対照表計上額の合計額並びに当事業年度における受取配当金、売却損益及び評価損益の合計額(a)保有目的が純投資目的以外の目的である投資株式銘柄数58銘柄貸借対照表計上額の合計額6,915百万円(b)保有目的が純投資目的以外の目的である投資株式の保有区分、銘柄、株式数、貸借対照表計上額および保有目的(前事業年度)特定投資株式
前事業年度銘   柄株式数(株)貸借対照表計上額(百万円)保有目的
(株)髙島屋1,594,657株1,527,000円事業上の関係の維持・強化
トヨタ自動車(株)220,804株1,327,000円事業上の関係の維持・強化
(株)みずほフィナンシャルグループ3,295,570株642,000円取引銀行との関係の維持・強化
ヒューリック(株)638,400株552,000円事業上の関係の維持・強化
住友商事(株)229,198株294,000円事業上の関係の維持・強化
(株)三菱UFJフィナンシャル・グループ457,750株272,000円取引銀行との関係の維持・強化
阪急阪神ホールディングス(株)316,400株170,000円事業上の関係の維持・強化
(株)クラレ86,250株125,000円事業上の関係の維持・強化
積水ハウス(株)90,950株120,000円事業上の関係の維持・強化
東海旅客鉄道(株)10,000株112,000円事業上の関係の維持・強化
(株)池田泉州ホールディングス206,963株102,000円取引銀行との関係の維持・強化
帝人(株)425,000株99,000円事業上の関係の維持・強化
東レ(株)140,000株98,000円事業上の関係の維持・強化
(株)滋賀銀行181,020株96,000円取引銀行との関係の維持・強化
ダイニック(株)459,000株81,000円事業上の関係の維持・強化
三井住友トラスト・ホールディングス(株)187,568株80,000円取引銀行との関係の維持・強化
東日本旅客鉄道(株)10,000株75,000円事業上の関係の維持・強化
近畿日本鉄道(株)155,455株65,000円事業上の関係の維持・強化
長瀬産業(株)47,124株62,000円事業上の関係の維持・強化
ユニチカ(株)1,013,200株58,000円事業上の関係の維持・強化
(株)南都銀行154,532株58,000円取引銀行との関係の維持・強化
本田技研工業(株)12,245株46,000円事業上の関係の維持・強化
西日本旅客鉄道(株)10,000株42,000円事業上の関係の維持・強化
イオン(株)32,149株38,000円事業上の関係の維持・強化
コニカミノルタホールディングス(株)51,000株37,000円事業上の関係の維持・強化

本来ならば「,000円」ではなく「,000,000円」を付加して出力するはずなのですが
うまく動作せず「,000円」が付加されてしまっています。

どこを直せば正しく動作するでしょうか?
ご教授の程よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

http://oshiete.goo.ne.jp/qa/8839168.html
でも書いたのですが「理由をはっきりさせましょう」

プログラムを書く技術も必要ですが、それ以上に「正しく動作するかを確認する」「期待通りでない場合、その原因を調査解析し修正する」技術が大事です。

今回の例だと
・期待している when ではないwhen節が実行されている。または、どの条件にも当て嵌まらない。
・gsub!による置換が期待通りではない。
が主要因になりそうだ、と予想します。
そうなったら、デバッガや途中経過表示を使って
・textの内容と、実行されるwhenとが期待通りかを確認する
・gsub前と後のtextを比較して、期待通りの置換になっているかを確認する
もし、whenの不一致が理由なら、期待したwhenに合致するようにプログラムを変更します。
もし、gsubの置換が理由なら、期待した置換になるようにプログラムを変更します。

例えば
when /株式数(株)\t貸借対照表計上額(千円)|株式数(株)\t貸借対照表計上額(千円)/
STDERR.printf("when:%d:text:%s:\n",1,text)
text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1}株\t#{$3},000円\t"}
STDERR.printf("gsub後:%s:\n",text)
text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
STDERR.printf("gsub後:%s:\n",text)
text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t(\d{1})/){|s| "#{$1}株\t#{$3}円\t"}
STDERR.printf("gsub後:%s:\n",text)
とすれば、 このwhenにマッチしたときの処理の様子がわかります。


とりあえず気付いたのは
○whenは上から順番の評価され、最初にマッチしたものが使われます。
when/百万円/
が先に書いてあると、「百万円」を含むものは全てこちらになるため、 when /株式数(株)\t貸借対照表計上額(百万円)/ 等は絶対にマッチしません。

○もしかして、textはファイル全体ですか?
株式数(株)\t貸借対照表計上額(千円)
データ1
株式数(株)\t貸借対照表計上額(百万円
データ2
が全部一つになっているものだったら、 データ2の部分も「千円」として全部処理されます。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q特定の数字のゾロ目をよく目にします。

何かの本に載っていた(たしか姓名判断の本)のですが、特定の数字のゾロ目ばかり見るのは(3のゾロ目ばかり見たり)何か意味があるって書いてあったのですが、何かご存じの方いらっしゃいませんか?何に載ってるとかでもいいのでよろしくお願いします。

Aベストアンサー

同じ数字のぞろ目をよく目にするのは、メッセージが込められてるみたいですよ。アメリカの有名なエンジェル・スピリチュアル・カウンセラーのドリーン・バーチューさんの著書『エンジェル・ヒーリング』と言う本に詳しくそれぞれのぞろ目の意味がのっています。あなたを守る存在からのメッセージみたいですよ。具体的な数字が書いてあればその意味もここに書けますが、書店でも売ってる本ですのでぜひ読んでみて参考にされてはいかかでしょうか?

QRuby 正規表現による文字列取得

こんにちは。

何度か質問させていただいていたのですが、正規表現を使っても正しく取得できない部分があったので質問させていただきました。

取得したい文字列の部分にflagをたてて、そこからfalseになるまで取得し続ける形をとっているのですが、どうもfalseになってbreakするはずの部分で取得を終了してくれません。

どう直せば良いのでしょうか?ご教授お願い致します。

プログラムは以下の通りです。

2 text = ""
3
4 data = "/home/edinet/E05267/S1001YX6/index.html"
5
6 flag = nil
7 IO.foreach(data) do |line2|
8 line2.gsub!(/普通株式/,"\nEOF")
9 case line2
10 when /保有目的が純投資目的以外の目的である投資株式の保有区分|保有目的が純投資目的以外/
11 flag = true
12
13 when /保有目的が純投資目的である投資株式の前事業年度|EOF|無議決権株式|政府及び地方公共団体|調 整 後 転 換 価 額|保有目的が純投資目的|普通株式|監査報酬の内容等/
14 flag = false if flag == true
15
16 end
17
18 text << line2.chomp if flag != nil
19 break if flag == false
20
21 end
22 text.gsub!(/<\/td>/,"\t")
23 text.gsub!(/<\/tr>/,"\n")
24 text.gsub!(/<[^>]+>/,"")
25 print text

実行結果

ロ 保有目的が純投資目的以外の目的である投資株式の保有区分、銘柄、株式数、貸借対照表計上額及び保有目的(前事業年度)特定投資株式銘柄株式数(株)貸借対照表計上額(千円)保有目的
アイサンテクノロジー株式会社50,00011,150取引関係の維持強化
セイコーエプソン株式会社10,0009,130取引関係の維持強化
株式会社トプコン10,0008,570取引関係の維持強化
株式会社大和証券グループ本社10,0006,560取引関係の維持強化
株式会社八十二銀行10,0005,690取引関係の維持強化
佐田建設株式会社60,0004,500取引関係の維持強化
(当事業年度)特定投資株式銘柄株式数(株)貸借対照表計上額(千円)保有目的
アイサンテクノロジー株式会社50,00043,900取引関係の維持強化
セイコーエプソン株式会社10,00032,100取引関係の維持強化
株式会社トプコン10,00016,920取引関係の維持強化
株式会社大和証券グループ本社10,0008,980取引関係の維持強化
福井コンピュータホールディングス株式会社10,0008,650取引関係の維持強化
株式会社八十二銀行10,0005,870取引関係の維持強化
ハ 保有目的が純投資目的である投資株式該当事項はありません。(6) 会計監査の状況当社は、金融商品取引法監査について有限責任監査法人トーマツより継続的に監査を受けており、正確な経営情報・財務情報の提供に配慮しております。業務を執行した公認会計士の氏名所属する監査法人
指定有限責任社員業務執行社員五十幡 理一郎有限責任監査法人トーマツ
指定有限責任社員業務執行社員小 松 聡有限責任監査法人トーマツ
継続関与年数については、7年以内であるため記載を省略しております。また、公認会計士4名、その他2名が会計監査業務に関っております。(7) 取締役会で決議することができる株主総会決議事項(自己の株式の取得)当社は、経営環境の変化に対応した機動的な資本政策を行うため、会社法第165条第2項の規定により、「取締役会の決議によって市場取引等により自己の株式を取得することができる。」旨を定款に定めております。(中間配当)当社は、株主への機動的な利益還元を行うため、会社法第454条第5項の規定により、「取締役会の決議によって、毎年9月30日を基準日として、中間配当を行うことができる。」旨を定款に定めております。(8) 取締役の定数当社の取締役は、「7名以内とする。」旨を定款に定めております。(9) 取締役の選任の決議要件当社は、取締役の選任決議について、「株主総会において議決権を行使することができる株主の議決権の3分の1以上を有する株主が出席し、その議決権の過半数をもって行い、かつ累積投票によらない。」旨を定款に定めております。(10) 株主総会の特別決議要件当社は、株主総会における特別決議の定足数を緩和することにより、株主総会の円滑な運営を行うため、会社法第309条第2項に定める株主総会の特別決議要件について、「議決権を行使することができる株主の議決権の3分の1以上を有する株主が出席し、その議決権の3分の2以上をもって行う。」旨を定款に定めております。(2) 【監査報酬の内容等】(1) 【監査公認会計士等に対する報酬の内容】前事業年度当事業年度
監査証明業務に基づく報酬(千円)非監査業務に基づく報酬(千円)監査証明業務に基づく報酬(千円)非監査業務に基づく報酬(千円)
14,600─14,600500
(2) 【その他重要な報酬の内容】該当事項はありません。(3) 【監査公認会計士等の提出会社に対する非監査業務の内容】前事業年度該当事項はありません。当事業年度当社は監査公認会計士等に対して、公認会計士法第2条1項の監査証明業務以外の業務である内部管理体制の整備に関する助言・指導業務について対価を支払っております。(4) 【監査報酬の決定方針】当社の監査法人に対する監査報酬の決定方針としましては、事前に見積書の提示を受け、監査日数、監査内容及び当社の規模等を総合的に勘案し、監査役会及び関連部門と協議を行ったうえ決定することとしております。第5 【経理の状況】1.財務諸表の作成方法について当社の財務諸表は、「財務諸表等の用語、様式及び作成方法に関する規則」(昭和38年大蔵省令第59号。以下「財務諸表等規則」という。)に基づいて作成しております。 なお、当事業年度(平成25年4月1日から平成26年3月31日まで)の財務諸表に含まれる比較情報については、「財務諸表等の用語、様式及び作成方法に関する規則等の一部を改正する内閣府令」(平成24年9月21日内閣府令第61号)附則第2条第2項により、改正前の財務諸表等規則に基づいて作成しております。2.監査証明について当社は、金融商品取引法第193条の2第1項の規定に基づき、事業年度(平成25年4月1日から平成26年3月31日まで)の財務諸表について、有限責任監査法人トーマツにより監査を受けております。3.連結財務諸表について当社は子会社がありませんので、連結財務諸表を作成しておりません。4.財務諸表等の適正性を確保するための特段の取組みについて当社は、財務諸表等の適正性を確保するための特段の取組みを行っております。具体的には、会計基準等の内容を適切に把握し、又は会計基準等の変更等について適切に対応することができる体制を整備するため、公益財団法人財務会計基準機構へ加入し、同機構が開催する研修等へ参加しております。

※長いためこれ以降は割愛します。

よろしくお願いします。

こんにちは。

何度か質問させていただいていたのですが、正規表現を使っても正しく取得できない部分があったので質問させていただきました。

取得したい文字列の部分にflagをたてて、そこからfalseになるまで取得し続ける形をとっているのですが、どうもfalseになってbreakするはずの部分で取得を終了してくれません。

どう直せば良いのでしょうか?ご教授お願い致します。

プログラムは以下の通りです。

2 text = ""
3
4 data = "/home/edinet/E05267/S1001YX6/index.html"
5
6 flag = nil
...続きを読む

Aベストアンサー

OS不明の為、linux前提で回答します。

/home/edinet/E05267/S1001YX6/index.html
このデータの改行がrubyできちんと認識されていないように見えます。
(htmlなのでブラウザでは改行されているように見えるかと思います。)

cat -n /home/edinet/E05267/S1001YX6/index.html
として、行番号付きで表示したとき、きちんと表示されるでしょうか。

例えば、index.htmlが1行で記述されていたなどということはないでしょうか。

提示されたスクリプトは、index.htmlが(rubyから見て)きちんと改行されていることが前提です。

Qゾロ目をよく目にする意味は?

かなり前に同じような質問をして、参考になる本を紹介していただいたのですが、その本が見つからなかったのでもう一度質問させて頂きます。
ここ半年ほど、やたらと1のゾロ目を目にします。
時計をふと見れば11時11分。ゲームのプレイ時間をみれば1時間11分。十字路で道を譲った車は11-11。下手すると毎日見ます。
以前図書館で読んだ本に、数字のゾロ目ごとに意味があるというのがあったんですが、その本が思い出せなくて見つかりませんでした。
もし悪い意味だったら、と恐くなってしまいます。
意味さえ分かれば気をつけられる事もあるでしょう。
ちょっと明日が恐いです。(11/11だから)
何か思い当たることのある方、教えて頂けませんか?

Aベストアンサー

「エンジェル・ヒーリング いつでもあなたは天使に守られている」より以下引用

111の意味
自分の思考を注意深く監視していてください。そして考えたいことのみを考え、考えたくなくないことを考えないようにします。この組み合わせはチャンスの扉が開こうとしているサインです。そしてあなたの思考が記録的な速さで具体的な形になっています。
111の組み合わせはまぶしいフラッシュのようなものです。その意味は宇宙があなたの思考の写真を撮り、それを具体的な形にしているのだということです。宇宙が撮ったあなたの思考に、あなたは満足していますか?していなければ、自分の思考を修正しましょう(自分の思考を制御したり監視したりするのが難しければ、あなたの天使に助けを求めましょう)

以上

私は最近、数字というのは表意文字なのではないかと思うようになりました。ひらがなやローマ字は音だけを表す表音文字です。漢字は一つ一つ意味を持っているので表意文字です。

1月1日、3月3日、5月5日、7月7日、現在日本で守られているのはこれらの日にちですよね。10月10日は、もうなくなってしまいました。昔は2月2日、4月4日なども大事な日だったらしいです。このように数字に意味を感じる文化は日本にも昔からあったのです。

「エンジェル・ヒーリング いつでもあなたは天使に守られている」より以下引用

111の意味
自分の思考を注意深く監視していてください。そして考えたいことのみを考え、考えたくなくないことを考えないようにします。この組み合わせはチャンスの扉が開こうとしているサインです。そしてあなたの思考が記録的な速さで具体的な形になっています。
111の組み合わせはまぶしいフラッシュのようなものです。その意味は宇宙があなたの思考の写真を撮り、それを具体的な形にしているのだということです。宇宙が撮...続きを読む

Q正規表現で両端に文字列を置換

初心者です。環境:ruby
こういう風にしたいのですが、どうやるのでしょうか?

◆変更前
20090925055902
20090925082043
◆変更後
a20090925055902a
a20090925082043a

よろしくお願いします。

Aベストアンサー

変更前が14桁の数字列固定という前提です。
a = '20090925055902'
b = a.gsub(/(\d{14})/, 'a\1a')
puts b #=> a20090925055902a

Qあなたが取ったゾロ目

特に意味はなくても取ると嬉しいゾロ目。
といいながら私はゾロ目を取ったことがないんですが、取ったことがある人はぜひそのときの様子を教えてください。

Aベストアンサー

5人の友達と呑み会をしている時に、サイコロを二つ振って合計で出た数が一番低いヤツが泡盛を一気呑みするゲームをやってた時なんだけど、最後が俺なんだけど、俺の前のヤツが1と3を出して、俺は余裕じゃんと思ってサイコロ振ったら・・・・1が2つ!!

「ありえね~!!」
友達、大爆笑!!

この世には出ると嬉しくないゾロ目もありますので、気をつけてください。

QRuby1.9で文字列の置換がうまくいきません。

Ruby1.9で文字列の置換がうまくいきません。

以下の処理を実行すると、gsubのところでEncooding::CommpatibillityError
とエラーが発生してうまく置換が出来ません。
何が原因でしょうか。あるいはもっと簡単な方法で置換する方法がありましたら
ご教示のほどお願いいたします。

<仕様>
半角、全角に関係なく指定文字で置換する。

※大文字部分は実際は全角文字です。
moji1 = 1abc56abcABC"
moji2 = "abc"
moji3 = "CBA"
⇒正しい置換結果は、"1CBA56CBAABC"

#半角→全角 空白含
moji2 = moji2.tr('a-zA-Z0-9 - ', 'a-zA-Z0-9 - ')
moji2 = NKF::nkf( '-SsXm0', moji2 )

data = moji1.gsub(moji2,moji3)
      ↑↑↑ここで上記のエラー発生する。

どうか宜しくお願いいたします。

Aベストアンサー

プログラムを書かれている文字コードは何でしょうか?

moji2 = NKF::nkf( '-SsXm0', moji2 )でShift-JISのStringがmoji2に代入されますが、moji1やmoji3は他のエンコードのStringが代入されているのでエンコードが一致しないというエラーになっているのだと思います。


私の環境(Windows VISTA)では以下の様になりました。

# coding: Windows-31J だと

test.rb:20:in `gsub': incompatible encoding regexp match (Shift_JIS regexp with
Windows-31J string) (Encoding::CompatibilityError)
from test.rb:20:in `<main>'
となったので

moji2 = NKF.nkf( '-SsXm0', moji2 )
moji2 = moji2.encode('Windows-31J') ←この行を追加してエンコードを一致させるとエラーは無くなりました。


# coding: shift_jis では
エラーは発生しませんでした。

プログラムを書かれている文字コードは何でしょうか?

moji2 = NKF::nkf( '-SsXm0', moji2 )でShift-JISのStringがmoji2に代入されますが、moji1やmoji3は他のエンコードのStringが代入されているのでエンコードが一致しないというエラーになっているのだと思います。


私の環境(Windows VISTA)では以下の様になりました。

# coding: Windows-31J だと

test.rb:20:in `gsub': incompatible encoding regexp match (Shift_JIS regexp with
Windows-31J string) (Encoding::CompatibilityError)
from...続きを読む

Qゾロ目ばかりみます。

最近パッと時計をみると
ゾロ目の数字の時刻ばかり見ます。

11:11とか4:44とかが多いでしょうか・・・

すごく気になります。

何か私の身におこる前兆でしょうか?

みなさん教えてください!!

Aベストアンサー

大抵の人が一度は思うことです.
人によって,幸運のジンクスだったり
不安になったり.

「時計 ゾロ目」などでgoogle検索してみてください.

肝心なことは,これは前兆というような「現象」ではなく,
当たり前のことの中から自分の心が無理矢理取捨選択して切り出した
「日常」です.
気になさらないのが一番です.

以下,引用です.

> たとえば、「私が時計を見るといつもゾロ目なの」
> という人がいたとする
>  ゾロ目、というか、時間と分が重なるのは1日24時間中
> 24回あるわけである。単純に考えて。
>
> で、人間が1時間に何回見るかは個人差はあるが
> 1時間に2回は見たとしても不思議ではない。
>
> で、12時間行動時間だとすると
> 時計を見るのは24回。
>
> 任意の時間にゾロ目になる分は
> 1つ。
> 12時だと12分。11時だと11分。
>
> つまり確率は60分の1.
>
> で、時計を見るのは24回だから
> 1日のうち、ゾロ目になる確率は
> 24/60=2/5
>
> つまり3日あれば必ずゾロ目を見るわけである。
> しかし、3日に1回も見てれば
> 「よく見る」と思ってしまう。
> なぜなら、その「地」にあたる
> 1日において23回分の普通の時計の時間は
> 記憶に残っていないからである。

参考URL:http://www.google.co.jp/search?num=50&hl=ja&lr=lang_ja&q=%E6%99%82%E8%A8%88%20%E3%82%BE%E3%83%AD%E7%9B%AE%20%E8%A6%8B%E3

大抵の人が一度は思うことです.
人によって,幸運のジンクスだったり
不安になったり.

「時計 ゾロ目」などでgoogle検索してみてください.

肝心なことは,これは前兆というような「現象」ではなく,
当たり前のことの中から自分の心が無理矢理取捨選択して切り出した
「日常」です.
気になさらないのが一番です.

以下,引用です.

> たとえば、「私が時計を見るといつもゾロ目なの」
> という人がいたとする
>  ゾロ目、というか、時間と分が重なるのは1日24時間中
> 24回あるわけであ...続きを読む

Qruby 正規表現の日本語とアルファベット

プログラミング言語rubyの正規表現について質問です。

大学の授業でrubyをやっているのですが、
下記の文字列をパターンマッチさせる方法がわかりません。
日本語とアルファベットが混ざっているときに
どのような正規表現のパターンを作ったらよいかわかりません。

「|」はただの文字として扱いたいです。
1行でひとかたまりです。

どなたか教えてくださいませんか。
よろしくお願いします。

↓ネタ|ネタのローマ字表記|皿の色|値段  の順に並んでいます。

生うに|namauni|gold|420
甘えび|amaebi|red|120
さわら|sawara|green|180
ねぎとろ|negitoro|green|180
さんま|sanma|green|180
納豆巻|nattomaki|red|120
いくら|ikura|blue|240
とり貝|torigai|gold|420
こはだ|kohada|red|120
つぶ貝|tsubugai|green|180
たらこ|tarako|red|120
赤貝|akagai|blue|240
ひらめ|hirame|gold|420
サーモン|salmon|blue|240
しまあじ|shimaaji|blue|240
中とろ|chuutoro|gold|420

プログラミング言語rubyの正規表現について質問です。

大学の授業でrubyをやっているのですが、
下記の文字列をパターンマッチさせる方法がわかりません。
日本語とアルファベットが混ざっているときに
どのような正規表現のパターンを作ったらよいかわかりません。

「|」はただの文字として扱いたいです。
1行でひとかたまりです。

どなたか教えてくださいませんか。
よろしくお願いします。

↓ネタ|ネタのローマ字表記|皿の色|値段  の順に並んでいます。

生うに|namauni|gold|420
甘えび|amaebi|red|1...続きを読む

Aベストアンサー

#2です。
以下のようなスクリプトを書いて実行してください。
--------------------------------
fh = open("data.txt")
while line = fh.gets
#もしデータに期待しない文字列を含むものがあるなら、スキップする
# 期待する文字列は、3つの|が存在し、各々の|の両端に|以外の文字が1文字以上存在すること
if /^[^|]+\|[^|]+\|[^|]+\|[^|]+$/ !~ line
#上記条件の文字列でないなら、次の行へ移る
next
end
#改行文字を削除する
line.chomp!
# |で分割する
elm = line.split("\|")
# 4つの部分に分かれるので、それらを印字する
print elm[0],"\n"
print elm[1],"\n"
print elm[2],"\n"
print elm[3],"\n"
end
--------------------------------
データは、data.txtという名称のファイルに格納されているものとします。
起動オプションで -Ksを指定してください。(文字コードの指定)
コマンドを実行したディレクトリと同じ場所にに、このdata.txtをおいて実行してください。
4つの個々の部分が、画面に表示されます。
なお、データが全て、例に出されたようなクリーンなデータだけなら、
if /..../ !~ line
end
の部分はなくてもかまいません。

#2です。
以下のようなスクリプトを書いて実行してください。
--------------------------------
fh = open("data.txt")
while line = fh.gets
#もしデータに期待しない文字列を含むものがあるなら、スキップする
# 期待する文字列は、3つの|が存在し、各々の|の両端に|以外の文字が1文字以上存在すること
if /^[^|]+\|[^|]+\|[^|]+\|[^|]+$/ !~ line
#上記条件の文字列でないなら、次の行へ移る
next
end
#改行文字を削除する
line.chomp!
# |で分割する
elm = line.split("\|")
# 4つの部分に分かれるので、そ...続きを読む

Qゾロ目(連番)をよく見る方、貴重なゾロ目を経験した方はいますか?

私は本当に、よくゾロ目を見たり、出したりします。
多いのは、特に時計で、デジタル時計は秒数まで刻みますが、
・「3:33:33」「11:11:11」「4:44:44」など、毎日のように、必ず何かしらのゾロ目を見ています。
「12:34:56」だったときは、さすがに「!?」と思いましたが(笑)。

ある日は切符、またある日は、ネットの掲示板に投稿したら、投稿Noがゾロ目だったこともありました(4444だったので、複雑でしたが)。

以前、レシートで「1,111」円を出し、ラッキー♪と浮かれてましたが、その後、柔道の田村亮子さんの「11,111」円のレシートをTVで見て、負けた~!と、悔しく思ったものです。

皆さんで、ゾロ目(連番)を見た、あるいは出した経験がある方はいますか?

Aベストアンサー

先日、スーパーで食料品を買いだめした時、7,777円でした。
レジの方が、「出る場所が違いますね」と。

QRuby 正規表現で特定の文字を取得・挿入

こんにちは。
当方Ruby初心者です。

HTMLからの正規表現による文字列の取得のプログラムを組んでいたのですが、
分からない所があったため質問させていただきました。

やりたいことは、以下の数字の文字列の後ろにそれぞれ「株」と「,000円」という文字を追加することです。
全ての数字の後ろに株、もしくは,000円を追加する事はできるのですが、個別に追加することができません。
どうかお力添えをお願いいたします。

前事業年度銘   柄株式数(株)貸借対照表計上額(千円)保有目的
 株式会社エイチーム200,400円株722,442 関係強化
 株式会社ケイブ15015,900 関係強化
 
当事業年度銘   柄株式数(株)貸借対照表計上額(千円)保有目的
 株式会社エイチーム125,300697,921 関係強化
 株式会社ケイブ5,0008,475 関係強化


以下プログラムです。
if text.match('株式数(株) 貸借対照表計上額(千円)')
28 text.gsub!(/\d[0-9]*?,\d[0-9]+|\d[0-9]+/) {$&.concat('株')}
29 text.gsub!(/\d[0-9]*?,\d[0-9]+|\d[0-9]+/) {|s1| s1.concat('株')}
30 else if text.match('株式数(1000株)')
31 text.sub!(/\d[0-9]+,\d[0-9]+/) {|s| s.concat(',000株')}
32 end
33 end
34 print text

こんにちは。
当方Ruby初心者です。

HTMLからの正規表現による文字列の取得のプログラムを組んでいたのですが、
分からない所があったため質問させていただきました。

やりたいことは、以下の数字の文字列の後ろにそれぞれ「株」と「,000円」という文字を追加することです。
全ての数字の後ろに株、もしくは,000円を追加する事はできるのですが、個別に追加することができません。
どうかお力添えをお願いいたします。

前事業年度銘   柄株式数(株)貸借対照表計上額(千円)保有目的
 株式会社エイチーム...続きを読む

Aベストアンサー

gsubで数字の後に「株」を付けているので全部に付きます。
特定の所だけに付けたいのなら、その特定の所をピンポイントで選択する正規表現を書いて、subで置換してください。


人気Q&Aランキング