ご回答者様
いつもお世話になっております。
スプレッドシートの正規表現で検索欄に「a*」とし、置換後の文字列を「1」とした時の挙動について質問をさせていただきたく存じます。
以下の図のように置換前の文字を、
a
aa
aaa
ba
baba
babaa
とし、検索と置換を立ち上げて検索を「a*」、置換後の文字列を「1」としました。
正規表現における「*」は、直前の文字を0 回以上繰り返す文字列の検索なので、
上記すべての文字列が検索の対象となるのは分かります。
しかし、置換後の文字列を「1」として置換したところ、
置換後
11
11
11
1b11
1b11b11
1b11b11
となっており、僕が想定していた置換後の文字列と異なっております。
僕が想定していたのは、
想定置換後、
1 ←「a」を1回繰り返した状態。 検索「a」を「1」に置換
1 ←「a」を2回繰り返した状態。 検索「aa」を「1」に置換
1 ←「a」を3回繰り返した状態。 検索「aaa」を「1」に置換
b1 ←「a」を1回繰り返した状態。 検索「a」だけを「1」に置換
b1b1 ←「a」を1回ずつ繰り返した状態。 検索「a」だけを「1」に置換
b1b1 ←最初の「a」を1回、次の「a」を2回繰り返した状態。 検索「a」を「1」に置換、その次の「aa」を「1」に置換
です。
なぜ正しい方の置換後の文字列で、前半3つ(a aa aaa)が「11」と1が2つ付き、後半ではbの前後に「1」が付いているのか分かりません。
*や正規表現について、僕が誤解している部分があるかと存じますので、ご教授くださいますと幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/25 06:40
2020/04/25 09:38