スポンサーサイト

-------- --:--:-- --

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【正規表現】特定文字を含まない行の検索

2010-02-05 02:16:16 Fri

^(?!(?=.*(○○○○○○))).*$


○○○○○○ の部分を適宜検索したくない言葉にする。

参考URL
http://oraclesqlpuzzle.hp.infoseek.co.jp/regex/regex-2-2.html
http://makotowatana.ld.infoseek.co.jp/tips.html

スポンサーサイト

【正規表現】最長一致のルール

2009-12-02 01:33:27 Wed

ちょっと前に正規表現で全置換しようとして困ったところメモ。
「最長一致のルール」なんて概念も知らなかったから余計にハマった。

やりたかったことは・・・
WS000036_20091202012620.jpg

↑のような文字列で、#{XXXXX} を3つとも(すべて)削除したかったです。

結局は以下のURLを参照して解決。
参考URL:http://kiyoeri.gotdns.org/~kiyoeri/pukiwiki/?%BD%A8%B4%DDTips?「置換・削除」と「最長一致のルール」を参照のこと


上記にたどりつくまでに「正規表現」「繰り返し」「1回目」などなど検索しまくりました。

まずはじめの失敗。
WS000037_20091202012749.jpg

↑のような正規表現で検索すると id= しか残らなくなってしまいます。
これは望んでいなくて、name= とか country= とかも残ってほしい。

ここで、正規表現 #{.*} はたしかに #{id} だけがヒットしても #{id}...#{country} として全体がヒットしても間違ってはいません。

「#{で始まり任意の1文字が繰り返す文字列であり}で終わる部分」が正規表現の意味であり、どちらにヒットしようともたしかに間違っていない。
だけれども、正規表現では「最長一致の原則(ルール)」というものがあり、これに従うために上記のような残念な検索結果となったわけです。

ではどうすれば、#{XXXXX} だけが消えてくれるか。

WS000038_20091202014141.jpg

上のような正規表現であれば、意図した結果となります。

#{[^}]*} の正規表現としての解釈は、
「#{で始まり}ではない1文字が繰り返す文字列であり}で終わる部分」、ちょっと自分の表現は悪くて伝わりにくいですが、要は、「#{で始まってなんか文字列があって}で終わる部分」ですかね。
あまり要はになってませんがそんなところです。


【正規表現】ヒットした文字列を置換対象としない方法

2009-07-06 22:10:49 Mon

問題です。

以下のテキストファイルが与えられています。

あいうえお12345, かきくけこ678910, さしすせそ1112131415, た
あいうえお12345, かきくけこ678910, さしすせそ1112131415, た
あいうえお12345, かきくけこ678910, さしすせそ1112131415, た
あいうえお12345, かきくけこ678910, さしすせそ1112131415, た
あいうえお12345, かきくけこ678910, さしすせそ1112131415, た
あいうえお12345, かきくけこ678910, さしすせそ1112131415, た


このとき、正規表現と置換機能を用いて、カンマの前にシングルクォーテーションを挿入しなさい。

という場合、どうやりますか?

普通に正規表現で下記のようにやると黄色い部分が置換対象となり、うまく変換されません。

WS000037.jpg

かといって、この黄色い部分を置換対象からはずすと目的の置換が行えません。
以下のようにやるとうまく置換できます。

WS000038.jpg

ポイントは二つ!

1.() でグループ化

2.\1 は、グループ化した正規表現の1つ目を指す

この二点です。
正規表現部分をグループ化してから、
\1 でグループ化した正規表現の出現箇所1を指すように記述しています。
\2\3\4\5\6\7\8\9...もあります。
10以降はエディタによって機能実装されている場合もあります。

正規表現やそれを応用した置換は覚えておいて損はないはずです。


【正規表現】正規表現「○○を含まない文字列」

2009-05-27 02:20:48 Wed

正規表現で、「○○を含まない文字列」を検索するには、

(?!.*○○).*.$

とすると○○を含まない行が選択される。

指定文字列を置換したくないときによく使うので覚えておくといい。


追記

http://isann.blog2.fc2.com/blog-entry-107.html

上記のURLリンク先を参考にしてください。
この情報では実現できません。
2010/02/05

名言集
全記事(数)表示
全タイトルを表示
ブログ内検索
Loading
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。