正規表現と、pukiwikiのrename機能について質問です。


renameプラグインで下記の画面が出た時に、正規表現を使うと、単に目的とするページの名前を変えるだけでなく、その名前を含んでいるページも置換できて、リンク切れになるのを防げる・・と理解しています(違っていれば指摘して下さい)。
http://screencast.com/t/dilY8KsOol

ただ、正規表現がよく分からないので、具体的にどのように書くと良いか教えて頂けると嬉しいです。
何卒宜しくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/08/28 16:10:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:rouge_2008 No.1

回答回数595ベストアンサー獲得回数351

ポイント100pt

renameプラグインの正規表現は、そのままではメタ文字が使用できませんので、変更したい箇所がページ名の一部で、複数のページを一括で変更したい場合に有効です。

MyPage01 → MyLocalPage01
MyPage02 → MyLocalPage02
MyPage03 → MyLocalPage03

例えば上記のように変更したい場合、「From:」に「My」、「To:」に「MyLocal」と入力します。
※変更前にどのように変更されるか確認の画面が表示されます。

「plugin/rename.inc.php」を次のように変更すると、通常PHPで利用するような正規表現でページ名の変更ができるようになります。(※私は検証済みです。)
http://pukiwiki.sourceforge.jp/?%E8%B3%AA%E5%95%8F%E7%AE%B13%2F363

renameプラグインのソース(plugin/rename.inc.php)の23行目付近を以下のように変更すれば正規表現置換でメタ文字を使用できます。(検証してませんけど)

- $src_pattern = '/' . preg_quote($src, '/') . '/';
+ $src_pattern = '/' . $src . '/';


なお、ページ本文等のリンクの変更は行われません。
プラグインの説明に『ページ内のリンクの書き換えは行ないません。yetlistなどを駆使して対処してください。』とあります。
実際、リンクの変更までは行われませんでしたので、renameプラグインでページ名を変更した後は、yetlistで未作成のページがある一覧(※変更前のページ名の横にそのページにリンクしているページが表示されます。)で確認するか、あるいはsearchで以前のページ名を検索するかして、見つかったページを1つずつ修正する必要があります。
ページの内容が多い場合や、ページ内に複数修正箇所がある場合は、編集欄から一旦テキストエディタに貼り付けて検索・置換を実行後、編集欄に戻すと少しだけ楽になるかもしれません。

・「rename【ページ名変更】」プラグイン
http://pukiwiki.sourceforge.jp/?PukiWiki%2F%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2F1.4#g75a0fa9

概要
既存ページの名前を変更します。実行には管理者権限が必要です。

ページの本文のほか、指定されたページ名の差分、バックアップ、添付ファイル、カウンターを一気にリネームします。

ページ名には変更するページの名前を指定します。省略時はページ名の選択または正規表現置換用文字列入力画面が表示されます。

変換結果は:RenameLog?ページに実行結果を追記されます。

備考
ページ内のリンクの書き換えは行ないません。yetlistなどを駆使して対処してください。

リネーム対象のページが凍結されているかどうかはチェックしていません。

関連ページにリネーム対象の文字列が複数含まれているとおかしくなります。

  • たとえば、hogeおよびhoge/hogeという二つのページがあったときに、hogeページをfugaに(関連ページを含んで)リネームすると、hoge/hogeページの名前がfuga/fugaになってしまいます。



・「yetlist【未作成ページを表示】」プラグイン
http://pukiwiki.sourceforge.jp/?PukiWiki%2F%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2F1.4#i541ecab

書式

?plugin=yetlist

概要
まだ作られていないページを一覧表示する。

既存のページでWikiNameあるいはBracketNameで指定されているが、まだ作られていないページを一覧表示します。


http://pukiwiki.sourceforge.jp/?%E8%B3%AA%E5%95%8F%E7%AE%B13%2F404
http://pukiwiki.sourceforge.jp/?%E8%B3%AA%E5%95%8F%E7%AE%B1%2F182

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません