質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

283閲覧

肯定的後読みで完全一致したワードを置換したい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2019/07/25 15:29

編集2019/07/25 16:24

やりたいこと

strにおける肯定的先読みでinuだけの後の値をgsubして肯定的後読みで読んで更新したいです
つまり、str = "<div inu=\"100\" inuinu=\"200\"></div>"str = "<div inu=\"300\" inuinu=\"200\"></div>"に変換したいです
^や$を使用しましたがうまくマッチしません。
inuで後読みする場合はどちらもマッチしてしまいます。
うまく選択的にinuを判定する書き方はございますでしょうか?

irb(main):003:0> str = "<div inu=\"100\" inuinu=\"200\"></div>" => "<div inu=\"100\" inuinu=\"200\"></div>" #どちらも更新されてしまう irb(main):004:0> str.gsub(/(?<=inu=\")\d{1,}/, '300') => "<div inu=\"300\" inuinu=\"300\"></div>" irb(main):005:0> str => "<div inu=\"100\" inuinu=\"200\"></div>" #一致しない irb(main):006:0> str.gsub(/(?<=^inu$=\")\d{1,}/, '300') => "<div inu=\"100\" inuinu=\"200\"></div>"

version

Ruby2.5.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/07/25 15:59

なんで inuinu じゃなく inu でチャレンジしてるんですか?
退会済みユーザー

退会済みユーザー

2019/07/25 16:23

申し訳ありません、inuinuではなく、inuを変えたいことが意図でした。修正しました。
guest

回答2

0

ベストアンサー

str.gsub(/(?<= inuinu=\")\d{1,}/, '300')
では?
#追記

申し訳ありません、inuinuではなく、inuを変えたいことが意図でした。修正しました。

では、
str.gsub(/(?<=\sinu=\")\d{1,}/, '300')
とか、
str.gsub(/(?<=\binu=\")\d{1,}/, '300')
ですね。
\sは空白文字にマッチします。\bは英数字と英数字以外の境目にマッチします。

投稿2019/07/25 16:11

編集2019/07/26 00:16
otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/07/25 16:23

申し訳ありません、inuinuではなく、inuを変えたいことが意図でした。修正しました。
退会済みユーザー

退会済みユーザー

2019/08/02 01:28

ありがとうございます。空白を入れることで解決しました。
otn

2019/08/02 01:35

見直すと、" の前の \ は不要ですね。 str.gsub(/(?<=\sinu=")\d{1,}/, '300')
guest

0

(?<=\sinu=\")\d+(?=\") でマッチするはずです。
\s は空白にマッチします。それを inu の前に付けています。

投稿2019/07/25 22:02

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問