
rubyの正規表現で"["を使いたいのですが、正しく実行できません
#! ruby -Ks
a ="test[test"
b ="test["
if /#{b}/ =~ a
print "hit"
end
エラー内容は
test.rb:4: invalid regular expression; '[' can't be the last character ie. can't start range at the end of pattern: /test[/ (RegexpError)
"\["と文字を入力することで解決するかと思いましたが上手くいきませんでした。
rubyのバージョンは1.8.2です。宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
b= を書き換えるなら#1の方の回答の通りですが、
if /test\[/ =~ a
と書かないということは、b は実際にはどこかから読み込んだデータが入っているわけですよね。
if /#{Regexp.escape(b)}/ =~ a
とすれば、bに含まれる正規表現記号を適切にエスケープして文字列そのままの正規表現にしてくれます。
もちろん、正規表現にせずに、単純に文字列が含まれるかと言うことなら、
if a.include?(b)
if a[b]
とか書きます。
No.1
- 回答日時:
「[」は正規表現で使われるメタ文字の一つですから、「[」という文字そのものとマッチさせるためには、正規表現では「\[」を指定する必要があります。
「test[」とマッチさせるためなら「test\[」と指定。ですが、さらに、
ダブルクオートでくくられた文字列中では、「\」という文字そのものが、バックスラッシュ記法の文字として使われていますから、「\」という文字はダブルクオートでくくられた文字列中では「\\」と指定する必要があります。
ですので、「test\[」という文字列を指定するためには、
b="test\\["
とする必要があります。もしくは、シングルクオートで
b='test\['
と指定してもかまいません。
「\」という文字はダブルクオートでくくられた文字列中では「\\」と指定する必要があったんですね!
b='test\['という書き方で今後は対応していこうと思います!
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- JavaScript [再掲]指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードについて 1 2023/05/10 15:09
- UNIX・Linux Debianでシェルスクリプトにおいて正規表現の条件文で[[,]]が使えないので困ってます 2 2023/01/20 09:27
- Ruby Ruby / passenger のインストールについて 1 2023/01/30 18:31
- 日本語 こんばんは。 How can I say in japanese that I have got t 4 2022/05/15 14:24
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) Excle VBA Findメソッドについて 3 2022/07/15 13:56
- 英語 英訳お願いします 進級試験に合格しました。 I passed the test for promot 4 2023/02/22 23:24
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語で全角文字を扱いたいので...
-
VBA シート上にドロップダウン...
-
ビット否定(反転)の記号はど...
-
Windows11のカメラで動画を撮り...
-
初心者プログラミング
-
VBAでダブルコーテーション入り...
-
Cプログラムについて
-
VB6.0 DataGridでのfirstRowの...
-
BNF(バッカス・ナウア・記法)
-
IEEE規格で「いちばん近い偶数...
-
excelの、ある数式内の{}の意...
-
クッキーCookieで、値のサイズ...
-
[開通手順]ネットワーク設定が...
-
final変数について
-
VBA 1行で複数の代入を行った...
-
URLが開いた後に処理したい
-
EXCEL/VBA 変数の値をクリップ...
-
C#の問題です。 文字列型の配列...
-
Excel-vba 文字列と変数を...
-
C言語 exitの使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VisualStudio2022でC言語プログ...
-
Cpadで文字化け
-
VBA シート上にドロップダウン...
-
Accessで文字列のバイト数読み込み
-
C言語で全角文字を扱いたいので...
-
VBでまた行き詰まってしまいました
-
HTML5では文中の半角不等号はち...
-
文字列の引き渡し
-
英数半角文字と「-」を指定する...
-
Ruby1.9で文字列の置換がうまく...
-
アンダーバーとバックスラッシュ
-
rubyの正規表現について
-
Ruby言語にて、全角カナ⇔半角カ...
-
プロキシを使うプログラムでエ...
-
VC2008+Qtの文字化け
-
void lcd_str(unsigned char* p...
-
<python>算数の問題を作るプ...
-
スプレッドシートの関数
-
open-uriを用いた、ウェブ上か...
-
ruby 正規表現の日本語とアルフ...
おすすめ情報