正規表現を使って下記の文字たちを
// } // $ // w //
から
// //} // //$ // //w //
のように置換したいのです。ただ後読み(否定と工程)とパターン修飾子mを使わずに置換したいのです。
mを使えば、簡単にできますが、mと後読み無しで上記のように置換できるのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
回答5件
0
訂正前
「後読み」は使う機会がないように読めますが、否定先読みは使っていいのでしょうか。
(2018/01/23 22:00追記)
こちらは間違っていた為、修正案を後述しました。
JavaScript
1string.replace(/^(?!//)/mg, '//'); 2string.replace(/^(?://)?/mg, '//');
訂正後
後読みが使えないなら、キャプチャすれば良いと思います。
JavaScript
1string.replace(/(^|\r\n|[\n\r])(?!//)/g, '$1//'); 2string.replace(/(^|\r\n|[\n\r])(?://)?/g, '$1//');
Re: aaaaaaaa さん
投稿2018/01/23 05:49
編集2018/01/23 13:02総合スコア18196
0
bash
1echo -e '//\n}\n//\n$\n//\nw\n//' | sed -e 'N' -e 's#//\n#//#'
あまりにも手抜きな方法ですね、、。
投稿2018/01/22 12:43
編集2018/01/22 12:49退会済みユーザー
総合スコア0
0
先読み言明は使っていいんですね?
perl
1 2$a=<<'EOD'; 3// 4} 5// 6$ 7// 8w 9// 10EOD 11 12# before 13print("$a\n"); 14 15# substitution 16$a=~s{\n(?!//)(?!$)} 17 {\n//}g; 18 19# after 20print("$a\n"); 21
投稿2018/01/22 11:22
総合スコア13727
0
ベストアンサー
m修飾子というのであればPHPでしょうか?
PHP
1$str=<<<eof 2// 3} 4// 5$ 6// 7// 8w 9// 10eof; 11$pattern="@(//)\r\n@"; 12$replacement="$1"; 13$str=preg_replace($pattern,$replacement,$str); 14 15print nl2br($str);
「//」行のあとに「//」が来た場合どうしたいかによります
投稿2018/01/23 01:25
総合スコア118255
0
PowerShell
PowerShell
1$a = "// 2} 3// 4$ 5// 6w 7//" 8[System.Text.RegularExpressions.Regex]::Replace($a, "^[^/]", "//`$0", "Multiline")
結果
// //} // //$ // //w //
m ではなく Multiline です。
修飾子ではなくオプションです。
投稿2018/01/22 11:41
編集2018/01/22 11:46総合スコア28675
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
2018/01/23 05:54
2018/01/23 09:28
2018/01/23 13:03