[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 12/14 15:13 / Filesize : 194 KB / Number-of Response : 810
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

正規表現 Part5



1 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:07:28 ]
正規表現(Regular Expression)スレです。

質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。

前スレ
正規表現 Part4
pc11.2ch.net/test/read.cgi/tech/1186030400/

384 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 07:01:53 ]
これ間違ってる?

(?<=aaa)bbb 直前にaaaがくるbbbにマッチ(先読み)。
(?<!aaa)bbb 直前にaaaがこないbbbにマッチ(否定先読み)。
aaa(?=bbb) 直後にbbbがくるaaaにマッチ(戻り読み)。
aaa(?!bbb) 直後にbbbがこないaaaにマッチ(否定戻り読み)。

385 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 07:04:38 ]
>>383は無かったことにしてくれ

386 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 09:18:59 ]
●正規表現の使用環境
lex
●検索か置換か?
検索 ?
●説明
C言語のコメントで使われるような書式の検索
/*で始まり*/で終わるような文
ただし途中で*/は出現しない
漢字コードはEUCです。
コメントが英数字だけならできそうなのですが
漢字などが入ってくるとよくわかりません。
よろしくお願いします。

387 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 10:47:44 ]
EUCなら、漢字がバラになっても英数字とコードが重複しないから
問題ないのでは?

388 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 11:20:03 ]
>>387
できれば正規表現を教えてもらえないでしょうか?
英数字は[a-zA-Z0-9]のようにできると思いますが
ひらがなやカタカナは[あ-んア-ン]のようにはやはりできませんよね?
文字コードで書くのでしょうか。。。。

389 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 11:21:52 ]
>>388
この場合、正規表現にひらがなやカタカナを書く必要ないでしょう?


390 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 11:40:01 ]
>>389
コメント/**/の中にひらがなやカタカナ、漢字、英数字がでて来ると思うのですが
必要ないのでしょうか?
例として
「/*(A|***B)*/」
Aは「*、/」以外の文字を表しBは「/」以外の文字を表す。
演算の*と混乱をさけるためアスタリスクは全角大文字にしているが
実際は半角にする。
このAとBを表したいのですが。。。。
例えば[0-9a-zA-z(漢字コード?)^/*(/と*を除く)]のようにすればいいのでしょうか?


391 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 12:15:38 ]
後出しで条件つけるなよ・・・

392 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 13:04:37 ]
>>390
目的は、コメント中の「*」を「*」にすること?



393 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 13:19:29 ]
>>391
すみません、質問の仕方が悪かったです;
>>392
いえ、「/*(A|***B)*/」の「*」は本当は「/*(A|xx*B)*/」
とかけてC言語ではかけるの「x」は「*」で、
正規表現の0回以上繰り返す「*」とかぶってしまうため
「/*(A|***B)*/」とかかないで「/*(A|***B)*/」と書いていると思います。
何がしたいのかはlexを使って字句解析をしたいのですが
コメントの部分をスルーするための正規表現の仕方がしりたいのです。

394 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 13:25:36 ]
字句解析するなら /* と */ だけ検知して
途中は読み飛ばせばいいような気がするんだけど、そうじゃないの?

395 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 13:29:59 ]
英数字なら出来そうとかのたまっているけど、まずはそれで実装してみりゃいいじゃんね。
それでEUCコードの部分で引っかかるようなら改良すればいい。

396 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 13:40:59 ]
ダメだこりゃ

397 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 13:45:57 ]
>>394 が正解。

コードで書くのは簡単なんだが、正規表現にするには独特のコツがいるという
タイプの問題なので、下手にこだわるよりさっくり問題そのものを別の方法で
解決してしまったほうが早い。

398 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 13:58:13 ]
よく分からんが、最短マッチが使えないからどうしようって話か?
/* -> COMMENT状態に遷移
*/ -> 戻す
でいいんじゃね

399 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 14:03:53 ]
>>394
/*と*/を検知するには
{^/*}{/*$}のような感じでいいのでしょうか?
行が複数行になったらおかしくなりませんんかね。。。。。

400 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 14:28:50 ]
ん、あれ?
別の板の正規表現スレで似た話があったから、その続きかと思った。
量指定子を+と*で書くと、

/*([^*]|*+[^/*])**+/

となる。

401 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 15:03:37 ]
>>400
回答ありがとうです<(_ _)>
よく考えて見ます。。
ちなみにマルチはしていません@@

402 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 22:36:25 ]
コンパイラコンパイラで使用できる正規表現というかEBNFは、しょぼくて、マルチバイト
対応するの大変だから生成されたパーサだけ使用して、スキャナは自前実装がお勧め。




403 名前:デフォルトの名無しさん [2008/11/11(火) 04:08:42 ]
●正規表現の使用環境
Excel & 正規表現検索
※ ttp://srcedit.pekori.jp/tool/excelre.html
●検索か置換か?
置換
●説明
英単語のみ先頭文字を小文字化
●対象データ
One
Two
Three3
●希望する結果
one
^
two
^
Three3
^^^^^^^
○自分の経緯
 検索:(^[a-z])([a-z]*)
 置換:[LOWER]$1$2
 結果:One ⇒ [LOWER]One
○知りたいこと
 このアドインにある「特殊置換」を利用する際の文法
以上、お願いいたします。

404 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 10:08:45 ]
おれなら Excel をデスクトップの「ごみ箱」へD&Dする

405 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:18:15 ]
コントロールパネルからアンインストールしないと意味ないって警告出るだろ。

406 名前:デフォルトの名無しさん [2008/11/12(水) 05:26:09 ]
mmMMamUUqpndbback

407 名前:403 mailto:sage [2008/11/12(水) 05:43:22 ]
それができたら、どんなに楽か・・・

408 名前:デフォルトの名無しさん [2008/11/12(水) 20:14:38 ]
とりあえずこのスレ>>1-10まで流し見て全く理解できなかった
もう一度読んでみるのが怖い

409 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 20:43:19 ]
>>403
特殊置換は変換後にそれだけしか書けないんじゃない?
とりあえず変換するだけなら↓でいけないか
変換前:^[a-z]+$
変換後:[LOWER]

410 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 00:28:30 ]
検索:A([a-z]*)  置換:a$1
検索:B([a-z]*)  置換:b$1
検索:C([a-z]*)  置換:c$1
検索:D([a-z]*)  置換:d$1
検索:E([a-z]*)  置換:e$1
検索:F([a-z]*)  置換:f$1
検索:G([a-z]*)  置換:g$1
検索:H([a-z]*)  置換:h$1
検索:I([a-z]*)  置換:i$1
検索:J([a-z]*)  置換:j$1
検索:K([a-z]*)  置換:k$1
(省略されました続きを読むにはここをクリックしてください)

411 名前:デフォルトの名無しさん [2008/11/14(金) 12:10:39 ]
●正規表現の使用環境
Repl-Ace
※ ttp://www.sirmiles.com/repl_ace/
●検索か置換か?
置換
●説明
testA
きょう
あした
testEndA

testA
あした
あさって
しあさって
testEndA
のようなtestAからtestEndAで囲まれている文字列(改行あり)を特定文字列に置換
●希望する結果
testA
1週間前
2週間前
testEndA

412 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 14:23:21 ]
正規表現を魔法のプログラミング言語だと勘違いしてないか?



413 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 14:52:11 ]
そのツールでうまくいくかどうかわからんが

パターン testA\n.*?testEndA\n
置換文字列 testA\n1週間前\n2週間前\ntestEndA\n

でいいのか?

何を期待してるのだかよくわからんが...

414 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 14:59:43 ]
処理系によってはドットは改行とマッチしないので注意。

415 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 19:38:18 ]
正規表現に通じている先輩は正に魔法のように正規表現を使ってあらゆるリクエストに解を提示している。
あんな人になるには一体どうすればいいんだろうか?

416 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:57:27 ]
とりあえずふくろう本は読んだか?

417 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 21:46:38 ]
やっぱりあのそこそこ分厚い青い本に挑戦したほうがいいみたいですね。TODOリストの一番上に上げときます。

418 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 23:15:54 ]
正規表現って何なんだよ
表現に正規も糞もあるか!

419 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 23:20:45 ]
正則表現という訳も、あるにはある。

420 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 00:25:47 ]
「正規表現」という表現は、確かに適切でない。
では何が良いかといわれると、判らない。
明治時代の人々は、偉大だった。

421 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 02:38:54 ]
regular expression を無理やり「正規表現」と訳しただけ。
アテ字と言って過言ではない。意味を深く考える必要は無い。

422 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 02:39:30 ]
「帝王切開」 みたいなもんだな。



423 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 02:53:00 ]
は?

424 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 02:54:53 ]
洗濯を選択だな

425 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 13:49:35 ]
何それ気になる

426 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 17:37:48 ]
形式言語理論の分野では正則表現ともいう

まあ今時の言語で使えるような正規表現はもはや正則言語で表現できる範囲を
越えてたりするんだけどね

427 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 19:05:57 ]
性器表現

428 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 22:00:13 ]
モザイクやハレーションか。
「♪ヤッホー FORTRANランラン」並みに手垢が付いたネタだな。

429 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 22:07:24 ]
>性器表現
>手垢が付いたネタ
つまりエロ本のことだな

430 名前:デフォルトの名無しさん [2008/11/16(日) 14:47:16 ]
よろしければ、お知恵をおかしいただきたいです。

"あるマックなどPCがあり、マックなどのコンピュータ"

の文字列から、/マックなどの?(.+)/のような正規表現で、「PCがあり、」「コンピュータ」の文字列を
取得したいのですが、うまくいきません。この場合、どのようにするのがよいのでしょうか?
よろしくお願いいたします。

431 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 18:58:39 ]
>>430
環境を書け

432 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 19:46:20 ]
環境を書けば答えられるの?



433 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 19:51:09 ]
出来ない、というのも答えの一つだしな

434 名前:デフォルトの名無しさん [2008/11/16(日) 20:14:40 ]
>>431
430です。
Ruby 1.8.6、UTF8です。
お願いします。

435 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 20:18:42 ]
>>431
ほら、質問者が環境書いたぜ。
「出来ない」 って答えろよ。

436 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 20:21:20 ]
文字列を切り取りたいわけだろ?
文字列を切り取るには、何が必要だ?
どこから、どこまで。スタートとエンドだ。

/マックなどの?(.+)/

これにはスタートはあるが、エンドが無い。
どこまで切り取ればいいのか不明なんだよ。

どこから・・・マックなどの?
どこまで・・・    ←これを決めろ。

437 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 20:46:51 ]
>>435
何なんお前
建設的なレスできないなら無駄なレスすんなよ

438 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 20:49:37 ]
で?環境書けば出来るの?

439 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 20:51:20 ]
うん

440 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 21:02:54 ]
>>430
str = "あるマックなどPCがあり、マックなどのコンピュータ"
re = /あるマックなど(PCがあり)、マックなどの(コンピュータ)/
puts re.match(str).to_a[1..2]

441 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 21:13:42 ]
↑↑
氏ね

442 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 08:23:20 ]
次の マックなどの?(.+) もしくは行末までなんじゃないかな。




443 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 09:34:46 ]
片仮名と平仮名の境目で切るのかな。
状態を持つ物なら、何らかのプログラミング言語を使わないと。

444 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 13:32:29 ]
他人が勝手に仕様を決めていいのかよ

445 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 15:33:30 ]
>>421
最初に訳した人が誰かは知らないが、regularの捉え方を間違えている。
正しいではなく、普通のと言う意味あいで(例:レギュラーガソリン)
汎則式とでもしておけば、初学者の違和感も起きないものを…

446 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 15:43:21 ]
どうでもいいですよ

447 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 17:07:42 ]
みんなチョムスキーが悪い

448 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 00:23:42 ]
すみません。教えてください。

●正規表現の使用環境
サクラエディタ ver.1.6.2.0

●検索か置換か?
置換

●説明
フルパスが記述されたテキストファイルをとあるソフト(画像ビューアのHamana)のリストファイルにしたい

●対象データ
C:\Program Files\Windows Media Player\wmplayer.exe

●希望する結果
D=C:\Program Files\Windows Media Player\
F=wmplayer.exe

行末の直前の\を置換すればいいのかな?と思ったのですが
指定の仕方がわかりませんでした・・・

449 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 00:40:18 ]
とりあえず
置換前:^(.*\\)(.*?)$
置換後:D=\1\r\nF=\2

450 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 01:03:03 ]
>>449
ありがとうございました

451 名前:デフォルトの名無しさん [2008/11/18(火) 12:09:47 ]
<img width="120" height="180">
</img width="120" height="180">
<img width="120" height="180"/>

という文字列をすべて
width="120" height="180"
width="120" height="180"
width="120" height="180"

にしたいのですが秀丸の置換で
検索→.* (.*)[/>].*$
置換→\1

とやってるのですが

width="120" height="180"
width="120" height="180"
width="120" height="180"/

と、さいごのスラッシュが消えません。
是非助言をください!・・・もう何時間もやってるんです(汗

452 名前:デフォルトの名無しさん [2008/11/18(火) 12:14:47 ]
.* (.*?)[/>].*$
でいけました!お手数おかけしました!



453 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 09:31:33 ]
とても大変だと思うのですが、よろしくお願いします。

●正規表現の使用環境
Windows上で動く「Perl5の正規表現と互換性のある」とマニュアルに書いてある
フリーの(今はシェアになっています)クリップボード拡張ソフト

マニュアルには、参考事例として
・複数行のテキストに含まれている空白記号をすべて削除する
[@ s/[ ¥t ]//gmk]
・複数行のテキストに引用記号をつける
[@ s/^/> /gmk]
などが書かれています。

●検索か置換か?
置き換え です。

●説明
窓の杜などからソフトウェアのファイルをダウンロードするときに、
そのソフトをレビューした記事のタイトルをダウンロード先フォルダの名前にしています。
しかし、記事からタイトルをコピーして、フォルダ名としてペーストするだけでは
「ファイル名には次の文字は使えません。」という警告をWindowsから受けてしまうことが頻繁にあります。

Windowsでフォルダ名に使えない文字を削除しつつ、無意味な連続する空行を削除し、
ペーストしただけでフォルダ名として使える文字列へと変換できる正規表現を考えていただけないでしょうか?


454 名前:453 mailto:sage [2008/11/20(木) 09:34:37 ]
●対象データ1
「改行」
Moo0 オーディオ再生器「改行」
コンパクトで軽快に動作し、直感的に操作できるオーディオプレイヤー「改行」
「改行」
for Windows「改行」

●希望する結果1 (フォルダ名に改行を使えないので、全ての改行をアンダースコアに置き換えつつ1行の文字列へ)
_Moo0 オーディオ再生器_コンパクトで軽快に動作し、直感的に操作できるオーディオプレイヤー_for Windows
(先頭のアンダースコアはあってもなくても構いませんが、無い方がうれしいです)



●対象データ2
シンプルかつ高機能な音楽プレイヤー
foobar2000
バージョン【0.9.5.6】 

●希望する結果2 (ここまでの変換に加え、連続する空白、TABをひとつのアンダースコアに置き換えつつ、さらに末尾の空白を削除)
シンプルかつ高機能な音楽プレイヤー_foobar2000_バージョン【0.9.5.6】

●対象データ3 (○アールはregistration symbolと呼ぶらしい丸の中のRなのですが、打てませんでした。)
1.
Intel○アール Graphics Media Accelerator Driver for Windows* XP (exe) (20476KB)
14.36.4.5002 2008/10/24

●希望する結果3 (ここまでの変換に加え、registration symbolを(R)へ、フォルダ名に使えない文字/をハイフンへ)
1.Intel(R) Graphics Media Accelerator Driver for Windows* XP (exe) (20476KB)_14.36.4.5002_2008-10-24


455 名前:453 mailto:sage [2008/11/20(木) 09:35:51 ]
なお、Windowsでフォルダ名に使えない文字列は
\ / : , ; * ? " < > | および 改行
とのことなので、これらを含まない形へ整形できたらと思います。


これらを一度に処理することが、正規表現で可能なのかどうかも分からないのですが、
もし、できそうなら、どなたか編み出してもらえないでしょうか?
よろしくお願いします。

456 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 13:49:38 ]
とりあえず、

s/[\\\/:,;*?"<>|]/_/g

みたいな。細かい改良点は自分で考えなよ。

457 名前:デフォルトの名無しさん [2008/11/23(日) 00:32:05 ]
………[2バイト文字][改行]
[2バイト文字]

↑このパターンを

………[2バイト文字][2バイト文字]

にするにはどう書けばよいでしょうか?

458 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 02:19:43 ]
s/\n//

459 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 02:39:08 ]
>>457
テンプレくらい読め。

それにそんだけじゃ情報が足りなすぎだ。
どうせ元データは何百行とあるんだろう?

どういう行とどういう行を連結したいのか位は明確にしろ。


460 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 05:14:10 ]
●正規表現の使用環境
Devas 3.4

●検索か置換か?
置換

●説明
各行先頭にある
空白4つと数字(1から85)、ピリオドを抜き出したい

例えば
1. 120.136.16.13:3128
2. 94.178.64.37:48018
79. pps.nntime.com:554
このようなIP+Portの前にある文字列のことです。

●対象データ
1.
85.

461 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 05:28:19 ]
^ *\d+\.

もし空白やドットが不要で通し番号だけ拾うのなら、
ツールにもよるけど ^ *(\d+)\. とか適当にアレンジして試しておくれ

462 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 06:36:22 ]
>>460
それ、置換なの?



463 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 10:02:54 ]
>>461
ありがとうございました!
^ *(\d+)\.
これでIPとPortだけに置換することができました。

464 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 15:26:32 ]
よろしくお願いします。

●正規表現の使用環境
Flexible Renamer(Perl5互換)

●検索か置換か?
置換

●説明

ファイル名の一部を別の位置へ移したい。

●対象データ
(日付)(場所)hogehoge というフォルダ名や (日付)(場所)hogehoge,jpgというファイル名

●希望する結果

(日付)hogehoge(場所)や(日付)hogehoge(場所),jpgというようにしたい。

465 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 15:29:21 ]
その日付や場所を特定するための法則は?

466 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 15:41:40 ]
それぞれ 「()」 でくくってあります。ともに一緒の括弧だとまずかったりしますか?

467 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 15:56:36 ]
ああ、その括弧は実際も括弧だったのねw

468 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:03:16 ]
>>464
s/^(\(.+?\))(\(.+?\))(.+)(\..+)?$/$1$3$2$4/

469 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:43:45 ]
ありがとうございます。
自分の悩んだ時間などウソのようにすっきり成功してしまいました。

今までも正規表現を使いたいと思って色々サイトを巡ったのですが
今回の答えも答えをもらって、見れば分かるぐらいの理解しかないのです。
良い学習サイトなどがあれば教えてくれませんか?それともオライリーの本を買うべき?


470 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:45:58 ]
>>469
俺はこのスレでROMって勉強してる

471 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:47:49 ]
とりあえずソフバンあたりで出してる入門書でもいいから
一冊読んだ方がその後が楽になる

472 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 17:29:37 ]
>>468が理解できるのなら、正規表現の基本はできてる気がする。
(カッコのエスケープ、最短マッチ、後方参照あたり)

もしプログラミングの経験がなければ、そっちを補ったほうがいいと思う。
正規表現も一緒に学べる『初めてのPerl』『たのしいRuby』あたりお勧め。
リネーマーも自分で作れるよ。



473 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 17:49:46 ]
おお、このスレの人は優しい人ばかりですね。
プログラムはPHPぐらいで、しかも正規表現がどうしても必要な場面に
遭遇した事がありません。

これからこのスレをROMったり、挙げてもらった本も入門書のようですので
探して見て勉強してみようと思います。
ありがとうございます。

474 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 10:49:00 ]
■質問
2ch のレスの
>>***
を、テキストエディタを用いて
#aa(){{{>>***}}}
に置換したいのですが、方法はありますでしょうか?

475 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 10:56:30 ]
>>*** のうち、どれが固定でどれが可変なのか区別がつかないと答えられない。
もし全部固定なら、そのままエディタの置換機能を使えば済む。
>>5を見て、対象データの例と希望する結果を書いてくれ。

476 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 12:56:55 ]
>>475
ありがとうございます。わかりにくい表現で申し訳ありません。
↓が対象データの例と希望する結果です。

●対象データ
>>123
>>456

●希望する結果
#aa(){{{>>123}}}
#aa(){{{>>456}}}

477 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 13:01:41 ]
>>476
検索 >>(\d+)
置換 #aa\(\)\{\{\{>>$1\}\}\}

478 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 13:18:38 ]
置換後の文字列が↓のようになってしまいました。
$1 のところを \d+ や (\d+)、$\d+、$(\d+) に変えて色々やってみましたが
ダメでした。置換には EmEditor Pro 7.02 を使っていますが、
何かやり方が誤っているでしょうか?

#aa(){{{>>$1}}}
#aa(){{{>>$1}}}

479 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 13:37:14 ]
それはソフトの使い方を読むか、サポートに聞け

480 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 14:31:04 ]
>>478
後方参照を $1 ではなく \1 で行う
置換 #aa\(\)\{\{\{>>\1\}\}\}

481 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 14:49:18 ]
>>480
お返事遅れました。
すっげwマジで出来たw 正規表現って本当にすごいですね。

自分は \t や \n 等、基本的なものしかわからなかったのですが、
今回の質問が非常に勉強になりました。

次に疑問が湧いた時には、正規表現でできないことはないという姿勢で
解決に望もうと思います。
ありがとうございました。

482 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 14:49:51 ]
>>480
その括弧のエスケープはなんかいみあるの?



483 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 14:55:12 ]
■追記
ちなみに、今回の置換の目的なのですが、
atwiki という wiki のページで
>
のような特殊文字を書くと、
適切に表示がされない不具合(?)があるので、
アスキーアート表示用のメソッド
#aa(){引数}
を用いて、> を囲みたいなと思ったのが目的でした。

初めは手動でやっていたのですが、あまりにも数が多いので
置換化できないかな、と思った次第です。

長文失礼いたしました。

484 名前:480 mailto:sage [2008/11/29(土) 15:01:52 ]
置換文字列なので無いw

置換 #aa(){{{>>\1}}}

こうだね。 吊ってくる






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<194KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef