f = ["1111111111111","2222222222222","3333333333333",]
f.each {|l|
p l.sub(/^.+$/, "aaaaaaa#{$&}bbbbbb")
p l
p ""
}
を Ruby1.8.7(2008-08-11patchlevel72)[i386-mswin32] で実行すると下記のように .sub(・・・) での置換開始行がずれました。なぜでしょうか?教えてくださいお願いします。
"aaaaaaabbbbbb"
"1111111111111"
""
"aaaaaaa1111111111111bbbbbb"
"2222222222222"
""
"aaaaaaa2222222222222bbbbbb"
"3333333333333"
""
No.1ベストアンサー
- 回答日時:
未検証。
Rubyの経験殆どなし。ですが,
http://www.ruby-doc.org/core/classes/String.html …
>.sub(・・・) での置換開始行がずれました。
メソッド自体が,そういう仕様なんじゃないの?
If the method call specifies replacement, special variables such as $& will not be useful,
もし、メソッド呼び出しがreplacementを指定知る時,$&のような特殊な変数は役に立たないだろう。
>as substitution into the string occurs before the pattern match starts.
なぜなら,文字列への置き換えは【パターンマッチが始まる前】に行われるからだ。
However, the sequences \1, \2, etc., may be used.
\1,\2...等の変数が用いられるだろう。
#Howeverは訳すと今ひとつしっくり来ないので訳さず
himajin100000さん、ありがとうございました。
示されたURLでよく分かりました。
残念ですが
s/・・・/・・・/
の代わりができないことがわかりました。
No.3
- 回答日時:
リファレンスマニュアルに書いてあったよ。
p l.sub(/^.+$/, "aaaaaaa\\&bbbbbb")
Gotthold さん、ありがとうございます。
himajin100000 さんの回答で、\1, \2 は確認できていました。
その他の\&, \', \` については たまたま私の確認ミスで、
誤って出来ないと認識していましたが、
ご指摘いただき、リファレンスマニュアルは、このことを説明しているのだと再認識しました。
s/・・・/・・・/ の代わりに使えるので、作業がはかどります。
助かりました。ありがとうございました。
No.2
- 回答日時:
> .sub(/.+/,"aaaaaaa#{$&}"の置換開始行がずれるのなぜでしょうか?
質問者さんがどう出力したいのかわからないので回答できません。どういう出力が欲しいのか具体的に補足したほうがいいと思います。
この回答への補足
実行結果に示しているように、ずれがあるのが判別できると思います。
そのずれが無いように、つまり
"aaaaaaa1111111111111bbbbbb"
"1111111111111"
""
"aaaaaaa222222222222bbbbbb"
"2222222222222"
""
"aaaaaaa3333333333333bbbbbb"
"3333333333333"
""
のように出力されるのがずれのない出力だと考えています。別の例で表現すると、
f = ["1111111111"]
だけなら正しい置換できていない出力となってしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Latexに関する質問です。 3 2023/05/23 10:18
- UNIX・Linux sedでの正規化 2 2022/05/10 11:39
- 防犯カメラ・監視カメラ・小型カメラ VHSを高画質な動画ファイルにしたいです。 3 2022/05/06 12:08
- 数学 写真の問題について質問があります。 ①赤丸部分についてですが、グラフの面積がx軸で対称になっているか 3 2023/02/13 23:14
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- 数学 4tx"+2x'-x=0をs=√tと置換して一般解を求める方法を教えて下さい 1 2022/07/14 13:38
- 工学 【制御工学】単位ステップ応答の遅れ時間の求め方(令和2年度の機械設計技術者試験(制御工学)の問題) 3 2022/11/02 10:51
- 工学 定常開放系において、質量流量 [kg/s]の作動流体が、比エンタルピh1[J/kg]、流速 w1[m 1 2022/07/13 13:12
- 数学 ラプラス変換について 3 2022/10/13 22:18
- Visual Basic(VBA) 任意の置換を互換の積で表すプログラム 4 2022/11/13 19:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビーリアルのユーザー名を変え...
-
パソコンのスクリーンセーバー...
-
(再質問)エクセルのマクロボ...
-
英数字を含む文字列(0-9,A-Z)...
-
講義でわからないのですが以下...
-
文字コードのエラー
-
WinSCPで画像のように puttyを...
-
パイソンのクラスについて
-
教えてください
-
pythonエラー
-
Accessで文字列のバイト数読み込み
-
初心者プログラミング
-
VBScriptでExcel(2019)上のデー...
-
Ruby on railsをrails sで立ち...
-
C言語の入力した文字を反転させ...
-
エクセルvbaでチェックボックス...
-
プログラミング
-
WIN11にオフイスを複数入れるこ...
-
VBA
-
パイソンエラーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
get() と find() の違いについて
-
A1の値をファイル名に指定した...
-
エクセルVBA オートフィルタで...
-
エラー「メソッドまたはデータ...
-
VBAで型が一致しないエラー(バ...
-
教えてください。vb5.0
-
Csvファイルの最終行を取得する...
-
try ~ catch構文が使えない
-
実行時エラー450:引数の数が一...
-
RubyでバイナリデータをIOスト...
-
メソッド定義の構文のdefって
-
rubyのメソッドについて
-
【Ruby on Rails】モデルのメソ...
-
Ruby on Rails 「attr_accessor...
-
COMコンポーネントの構造の本質...
-
Rails4でJSONのParseErrorを判定
-
Pythonでcall_user_funcを行う
-
【C++】DxlibのLoadgraph()を使...
-
正規表現で両端に文字列を置換
-
スレッドとコンテナ
おすすめ情報