9200117035641291ぽちろぐEOS R6II・GR III・α7IIIの実体験お散歩カメラブログ。まつもと(Artman)のテキストエディタJeditで正規表現。
まつもと(Artman)のテキストエディタJeditで正規表現。

まつもと(Artman)のテキストエディタJeditで正規表現。

もう何年使っているでしょう?旧まつもと、現ArtmanのテキストエディタJedit

こういうのは「慣れ」ですから、もっと高機能な・安定したものが出てきてもなかなか移行できないものです。Windowsなら秀丸エディタかな?有料というところも同じですね。Jedit、一部の巨大なデータを開こうとすると「だんまり」を決め込んだりして意外と不安定な面も見せるんですよね。

それはさておき。

こんな原稿をいただきました。

A賞:ぽち

B賞:モネ

C賞:パル

「○賞」のところを「太字にして欲しい」と。HTMLなら

<p><strong>A賞</strong>:ぽち</p>

と表記すれば良いと。

ただしこんな項目が数千あります。A賞・B賞もそんなに単純なものではなく、共通項は「:(全角コロン)」のみです。「賞」の文字すら共通していません。こんな時はWordPressに貼り付けて、目で見て必要箇所を選択、ツールバーの「B(ストロング)」ボタンを押しまくります・・・って、そんなことやってられるかー!

正規表現

正規表現とは「文字列の集合を一つの文字列で表現する方法の一つである。」とのこと。

PHP、perl、ruby、その他なんでもプログラム言語なら、これが無いと始まりません。

例:if (preg_match(“/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/”, $text)) {…….}

上記はPHPで「渡された文字列がe-mailアドレスの規則に則っているか調べる」正規表現です。あくまで「規則に則っているか調べる」だけで、存在するかとかは調べてくれません。・・・・分かりにくいwww

しかもこの正規表現、言語によって方言があり微妙に異なっています。Jeditの場合、Rubyに準拠した正規表現による検索エンジンを採用しています。

すると、上記の検索は簡単です!

検索文字列=「^.+:」

  • ^は行頭を表します。
  • .は任意の一文字を表します。
  • +は直前の文字が1つ以上繰り返されることを表します。

すると、行頭から:が出現するまでを検索できることになります。

置換

検索/置換って、よく使いますよね?(意外とみんな手作業でやってたりすることが多いんだなwww)

今回の問題は、置換する文字列を指定できないことです!

^.+:

<strong>????</strong>:

通常は「????」に、置き換えるべき文字列を入れなければなりません。しかし「.+」で指定した文字列は「何が入っているか分からない!」です。さて、困った。

「.+」で検索した文字列を変数に入れて、置換文字列としてその変数を呼び出してやれば良いということは分かるのですが、指定方法が分からない。Jeditは正規表現を使えると言っても、「検索ボックスの中で」ということだけですから、スクリプトを組むとかできないですものね。

解決

ちゃんと解決策は用意してありました。

「^(.+):」のように、変数にぶち込みたい部分を()でくくります。するとその変数を「\1」「\2」のように、順番に置換ボックスで呼び出せるようになります。

スクリーンショット 2016-02-11 13.03.53

ああ、数千カ所じゃなくて1304カ所でした(^_^;

ふつうは変数というと$1とか$bufferとか$charとか、頭に$を付けますよねえ?正規表現チェックボックス隣の「?(ヘルプ)」もたいへん分かりにくいし。

こんなこと調べるのに1時間近くもかかってしまいましたが、手でやるより早いし、なにより見落としがありません(^_^ /

この記事は2016/02/11に公開され、125 views読まれました。

     PC   , ,
0 0
Article Rating
申し込む
注目する
guest

0 Comments
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る

最近1ヶ月で人気の記事

ぽちろぐEOS R6II・GR III・α7IIIの実体験お散歩カメラブログ。まつもと(Artman)のテキストエディタJeditで正規表現。 EOS R6II・GR III・α7IIIの実体験お散歩カメラブログ。

Copyright©ぽちろぐ, All Rights Reserved.

0
あなたの考えが大好きです、コメントしてください。x