- ベストアンサー
Rubyの正規表現について教えてください
配列に文字列を格納し、先頭が大文字または数字の文字列だけ別の配列に入れようとしています。 次のようにプログラムを作ったのですが、ifの行でエラーが出ます。 何が間違ってますか? mojiretu_array.each{|mojiretu| if mojiretu =~ [^a-z]\w+ mojiretu_out.push mojiretu end }
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- Rubyにおける正規表現(一致しない)
Rubyを使って、テキスト処理をやっています。 どうしても、うまく行かないところがあります。 サジェスチョンをお願いします。 正規表現にて、 2つの条件フラグが成立していて、かつ、特定の文字列を含まないという条件です。 1行の内容は、textに入っています。 if (myFlag1==1) && (myFlag2==1) && (!/abc def/) then xxxxxxxx end (!/abc def/)は、perlでの表現です。Rubyでは、少なくとも (!/abc def/=~text) かな、と考えましたが、ダメでした。 (/abc def/!=text) でも、だめでした。 宜しくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- 正規表現で置換
正規表現の初心者です。 テキストエディタを使って、「@:」で始まる以外の行の先頭に「//」を挿入してコメントアウトしたいのですが、正規表現がうまく書けません。 検索対象: ^[^(@:)] 置換文字列: // でいいのかなと思ったのですが、[]の中ではグルーピング用の()も文字として認識されてしまうのですね。 どのように書いたら正しく置換されるでしょうか。 どうかご教示ください。
- ベストアンサー
- その他([技術者向] コンピューター)
- メルアドをチェックする正規表現?
こんにちは,よろしくお願いします。JavaScriptでメルアドをチェックしようと次のような文字列を,patternという変数に代入して, var pattern = "^[a-z0-9\-_.]+@[a-z\-]+(\.[a-z\-]+)*com|net|org|edu|gov|mil|int|info|biz|name|pro|museum|aero|coop|[a-z][a-z]$"; 次のようにチェックしたのですが, if(mail.match(pattern)){・・・ "aa"など,2つ以上の小文字のアルファベット文字列にマッチしてしまいます。つまり,@が入っていなくてもマッチしてしまいます。実は,正規表現の解説書を見てこのような文字列としたのですが,JavaScriptでは不都合な点があるのでしょうか?ご存知の方がいらっしゃいましたら,ご教授ください。よろしくお願いします。
- ベストアンサー
- JavaScript
- 正規表現について
任意の文字は「.」であらわされるようですが、とほほさんのサイトによると、\nは除いた任意の文字とあります。\nも含んだ任意の文字はどう表現すればいいのでしょうか? .|\n でいいんでしょうか? テキストファイルを$dataに読み込み、<start>と<end>にはさまれた改行を含む文字列を取得しようと、 if($text =~ /<start>(.*)<end>/){ print $1; } としたのですが、if文に引っかかりません。さらに、 if($text =~ /<start>([.\n]*)<end>/){ print $1; } かな?と思いましたがこれもできませんでした。 何かいい方法はないでしょうか?
- ベストアンサー
- Perl
- 正規表現で日本語文字化け
winxp でrubyの勉強をしていますが、正規表現により分割した日本語の文字列を処理するときにどうしても文字化けしてしまいます。 環境はwinxp pro,activeruby 1.8.6, RDE 1.1.1.1 です。実行しようとした内容は ”蛸 110円”など名前と金額の組み合わせが複数行乗っているテキストファイルを読み込、以下の正規表現で名前と金額を別々の配列に格納しています。 if /(\w+)\s+(\d+)/e =~line menu[i]=$1 price[i]=$2 ・・・ 上記の処理では 変数line は正常に日本語を格納していますが、$1には”蛸”ではなく文字化けした状態で値がセットされています。 ソースの先頭には $KCODE=Ks を記載し、読み込むファイルもソースファイルもSJISで揃えました。 上記以外にどのような点に留意すればよいのか、そもそも認識が間違っている点があるかなどご指摘いただければと思います。よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- 正規表現[0-9]
ある文字列が大文字のアルファベット(A~Z)で構成されていることを正規表現を用いてチェックしたいと思ってます。 例えば "A0001" という文字列が A~Z で構成されているかを判断しるにはどうしたらよいですかね?? PatternクラスとかMatcherクラスとかを使用するみたいなんですが、なんかよくわかりません。 以下のように動かしたんですが、全く動きません。 boolean result_flag=false; if("A0001"=[A-Z]){ result_flag=true; } Javaおよびプログラム初心者でわかりずらくてすいませんが、 どうかお助けをよろしくお願いいたします。
- ベストアンサー
- Java
- 正規表現でのマッチング
連想配列%hushがあります。 %hushの中のキーが「a何とか」、つまり a0、a1、a2、a3、・・・ の値だけを、配列@arrayに格納します。 つまり $array[0]=$hush{'a0'} $array[1]=$hush{'a1'} $array[2]=$hush{'a2'} $array[3]=$hush{'a3'} ・・・ といった感じにしたいのですが、 「a何とか」は正規表現を用いて a.* と表現できます。 ってここまでは手元の本で分かったのですが、マッチングのif文をどう書けばいいんだよ! if($key==a.*) と書いてもうまくマッチしてくれないんで、a.*を""で括ってみたり()で括ってみたりするものの相手にされず・・・ 手元の本は「こういう場合正規表現ではこう書けば良くて、これをマッチングさせれば良い」みたいなことを書いていますが、マッチングのさせ方は書いていません。 プログラムの文法書を読むと、条件分岐の仕方は書いていますが、==演算子の右側が正規表現だった場合の使い方は書いていません。 あるいは、正規表現の場合のマッチングはif文などを用いないのでしょうか? だったら正規表現の本にマッチングの文法を書いていますよね!? なんだかんだでマッチングがうまくいかないのです。 この場合、どう記述すればいいのでしょうか? お手数をお掛けします。
- ベストアンサー
- その他([技術者向] コンピューター)
- Rubyの変数を含んだ正規表現について
下のように正規表現でlineと 1=,2=などから始まる行を抽出する プログラムですが、どうやら正規表現の左辺(//の中身) には変数は使えないようです。iが文字として 認識されているようです。 解決策を教えてください。 while line = io.gets 20.times{ |i| if /^i=(.*)/ =~ line p $1 } end
- ベストアンサー
- その他(プログラミング・開発)
- テキストエディッタによる正規表現
EmEditorで正規表現を行っております。 検索してもサンプルが見当たらなかったので、 どなたかご教授いただけるとたすかります。 ・1行目~13行目まで文字列関係なく正規表現 ※1行目から指定行までの ・1行目の空白を削除(先頭文字ではなく何も書かれてない1行目の行を削除したいです) よろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- 正規表現にマッチする文字列の一括出力
任意の正規表現を与えてやり、そのパターンに合致する文字列を 1行1文字列でテキストファイルに一括出力したいと考えています。 例えば、 [a-z][a-z][a-z] を与えてやると、 aaa aab aac aad ... ... zzx zzy zzz と、26の3乗で17576行の文字列をテキストファイルなどに出力。 LINUXのコマンドラインなら多少分かるのですが、プログラミングは さっぱりで、上記の目的につかえそうなユーティリティも探してみた のですが、見つけることはできませんでした。 よい方法がありましたら、ご教授よろしくお願いいたします。
- ベストアンサー
- その他([技術者向] コンピューター)
お礼
回答ありがとうございます。 ご指摘のように修正したらうまく動作しました。