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


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

正規表現 Part6



1 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 00:36:04 ]
正規表現(Regular Expression)スレです。

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

【 前スレ 】 正規表現 Part5
pc12.2ch.net/test/read.cgi/tech/1212498448/

596 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 11:08:48 ]
せめて >4のテンプレ埋めるくらいはしてくれんと。
Excel、秀丸共に現役バージョンが混在してるソフトなんだし
環境晒しもせず、できませんできません言われてもどうしようもない

WinXPSP3 / Excel 2002(Office XP) SP3 / 秀丸8β25 (HMJRE V2.06)
とりあえず↑の環境では
・Excelコピー→秀丸へペースト
・名前を付けて保存:テキスト(タブ区切り)→秀丸で開く
のどちらでも問題なくできたよ。

597 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 12:28:52 ]
マルチライン、マルチラインって言ってるヤツ、バカじゃねぇの?

598 名前:デフォルトの名無しさん [2009/11/21(土) 14:49:56 ]
●正規表現の使用環境
Java1.6

●検索か置換か?
検索

●説明
雑多な文字列からスラッシュで終わるURLを抽出したい

●対象データ
今日はabcd.efgh/abc/でご飯を食べました
そしたら12345/abc/index.htmlなスープが出てきてビックリ
おまけにaiueo/test/xxx.imgこんなデザートまで

●希望する結果
abcd.efgh/abc/


599 名前:598 [2009/11/21(土) 15:27:20 ]
●パターン
(|https://){1}[\w\_\.\-/:\#\?\=\&\;\%\~\+]+/[^A-Za-z0-9\_\.\-/:\#\?\=\&\;\%\~]

●結果
abcd.efgh/abc/


最後に一文字付いてしまいます
どうやって付かないようにすれば良いでしょうか

600 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:14:20 ]
否定の先読み使え

601 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 03:17:06 ]
2 文字目以降にマッチする正規表現はどのように記述したら良いですか?
例えば "abcXdXefgXXhij" という文字列の、2番目以降全ての "X" にマッチするようなものです。
基本的そうなのですが、ちっとも思いつきませんでした。

602 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 09:13:58 ]
2文字目以降ってのが何を指してるのかわからんな。
その例だとどれにマッチすればいいんだ?

603 名前:601 [2009/11/24(火) 09:43:31 ]
>>602

すいません、いろいろ書き忘れてました。
こんな感じです。

- 使用環境: AutoHotkey 1.0.48
- 使用法: 検索
- 説明: 下記にある文字 X を、最初だけ残して残りを Y に置換したい

"abcXdXefgXXhij" -> "abcXdYefgYYhij"


604 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 09:55:19 ]
AutoHotKeyならRegExReplaceで開始位置を指定できるので、
最初のXの次の文字からにすりゃいいんじゃねーの?



605 名前:601 mailto:same [2009/11/24(火) 10:14:23 ]
>>604
そうでした、ありがとうございます。
こんな感じでできました。

RegExReplace(str, "X", "Y", temp, -1, InStr(str, "X") + 1)

606 名前:デフォルトの名無しさん mailto:sega [2009/11/24(火) 19:44:10 ]
IPv6かどうかを調べる正規表現ってどこかにサンプルある?

607 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 21:06:46 ]
IPv6 regex でググってみるとか

608 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 00:47:05 ]
IPv6 アドレスの形式チェックを正規表現でやる香具師は池沼。
getaddrinfo(3) を使え。

ってうちのじっちゃんが言ってた。

609 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 08:59:16 ]
>>608
inet_ptonだろ

610 名前:606 mailto:sage [2009/11/26(木) 09:39:14 ]
>>608
JavaScriptとか使って入力段階で一旦弾きたいんですだよ。
サーバ側ではinet_ptonなりなんなり別の手段で再チェックするけど。

611 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 09:47:28 ]
>>610
はやくぐぐれよ

www.google.co.jp/codesearch?q=IPv6+regex

612 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 10:42:06 ]
>>608
いのなかのかわず

613 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 13:47:57 ]
鬼車でひいひい言わせてやるよ

614 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 23:51:33 ]
>>609
inet_pton(3) のことは綺麗さっぱり忘れろ。

ってうちの itojun が言ってた。



615 名前:デフォルトの名無しさん [2009/11/27(金) 11:50:16 ]
●正規表現の使用環境
perl5

●検索か置換か?
検索

●説明
クォーテーションに囲まれた(省略可)の文字列を取得したい。

●対象データ
"aaa":'bbb':`ccc`:ddd:eee:666:777:888:999:000:111

●希望する結果
$1:aaa
$2:bbb
$3:ccc
$4:ddd
$5:eee
$6:666
$7:777
$8:888
$9:999
$10:000
$11:111

(["'`]*)([^\1]*)\1):(["'`]*)([^\2]*)\2):(["'`]*)([^\2]*)\2)の形式で、
後方参照が一桁の時はうまく行くんですが、二桁になると不具合がおきます。

(["'`]*)([^\10]*)\10)
\10の下一桁に該当する文字(0)があるとマッチしません。
原因は[^\10]の部分が「\10以外」ではなく「\1と0以外」と解釈される為では
ないかと思いますが、回避する記述方法はありますか?。

616 名前:デフォルトの名無しさん [2009/11/27(金) 12:02:52 ]
失礼しました。

(["'`]?)([^\1]*)\1:(["'`]?)([^\3]*)\3:(["'`]?)([^\5]*)\5
(["'`]?)([^\11]*)\11)

$2:aaa
$4:bbb
$6:ccc
$8:ddd
$10:eee
$12:666
$14:777
$16:888
$18:999
$20:000
$22:111

でしたm(__)m。

617 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 13:26:38 ]
そもそも文字クラス中で\1とかは使えない罠。
[^\1]は文字コードが1の文字以外に解釈されて
いると思われる。

print "match1\n" if 'aa' =~ /(.)[^\1]/;
print "match2\n" if "a\001" =~ /(.)[^\1]/;
print "match3\n" if 'ab' =~ /(.)[^\1]/;

618 名前:デフォルトの名無しさん [2009/11/27(金) 13:49:45 ]
1と3だけマッチしますね。「(後方参照としての)\1と0以外」と
解釈される為でも無いということですね。

確かに下一桁が該当する場合に必ず一致しないということでも
なかったので、原因がわからず苦しんでました。ありがとうございます。

^を使用して簡潔に「(二桁で指定する)後方参照の文字を含まない
文字列」は表現できないものでしょうか。

619 名前:デフォルトの名無しさん [2009/11/27(金) 14:47:01 ]
クラスの中で使えないということは^で「以外」を
表現することも出来ないということですね…。

perl5なんで(?!regexp) が使えるのかな。



620 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 15:01:37 ]
クォーテーションに使った文字以外と書きたくなるのはわかるが、
正規表現では書きにくいので最小マッチ.*?でいいんじゃね?

621 名前:デフォルトの名無しさん [2009/11/27(金) 15:16:04 ]
最小マッチだと文字間の区切り記号「:」を含む文字列を指定できないんです。
説明不足でした。

●対象データ
"aaa":bbb:"c:c"

●希望する結果
変数1「aaa」
変数2「bbb」
変数3「c:c」
としてマッチさせたいんですが…。

622 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 23:19:02 ]
/\G(["'`])(.*?)\1(:|$)/

623 名前:デフォルトの名無しさん [2009/11/28(土) 00:53:45 ]
実現できました。ありがとう御座いましたm(__)m。

文字列数は固定なのと、クォーテーションは
その文字列内で使わなければ省略できる形が
望ましかったので以下の形にして無事動作しました。

/(?:("?|'|`)(.*?)\1):(?:("?|'|`)(.*?)\3):(?:("?|'|`)(.*?)\5)$/

\Gは始めて知りました。奥深くて理解が追いついてませんが、
勉強したいと思います。

初歩的で恥ずかしいのですが、クォーテーション部分の記述って
「"」または「'」または「`」または「入力なし」を表わすものとして

"?|'|` で正しいのでしょうか

それとも ["'`]? とか他に記述法があるのでしょうか。

624 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 01:29:40 ]
訂正 "?|'|`では正常に判定されませんでしたm(__)m。




625 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 13:29:56 ]
"a1a2" =~ /([a-z][0-9])+/
p $1
p $2

これで$1に"a1" $2に"a2"になるようには出来ませんか?
"a1a2" =~ /([a-z][0-9])([a-z][0-9])/
コレなら行くんですが・・・

626 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 13:36:41 ]


627 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 15:03:10 ]
エスパー的にはscan使えでよさげ

628 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:56:11 ]
正規表現を学習したいのですが、自分の県には何処に行っても正規表現の本が辞典(リファレンス)以外売っていません
何か段階的に学習出来るお勧めの書物はないでしょうか?


629 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:57:28 ]
とりあえずふくろう本

630 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 19:45:57 ]
>>628
629さんも言ってる通り、正規表現の本はオライリーのフクロウしか選択肢が無いかも。

あとはネットで勉強すると良いかも。
パターンを何回自分で作ったかによるところが多いから、
PHPチェッカーで作りつつ勉強して、正規表現パズルで息抜きして。
って感じで、フクロウと併用するといいかも。

631 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 20:07:32 ]
体で覚えるのも一つの方法だな。
オレみたいに頭の弱いヤツなら。
正規表現検索機能つきのテキストエディタで試行錯誤してれば
すぐに覚えられるよ。
unix の ed とか、まるで「正規表現養成ギブス」だもんな。

632 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 20:09:40 ]
>>631
大丈夫、EDは治療できます。安心してください

633 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 20:22:11 ]
パズルとかよりエロデータ整理とか
ダウンロードの方が覚えると思うが。。。


634 名前:628 mailto:sage [2009/11/29(日) 21:36:03 ]
皆さん、ご返答ありがとうございました



635 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 15:26:13 ]
大量のエロデータとかダウンロードとかそんな興味ないわw

636 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 15:37:50 ]
実用的にはふくろうもいいけど、オートマトンや言語理論の勉強して
基礎を理解しておくと数学的に無理なことをやろうとしたりとか無駄に
悩まなくてよくなるのでお勧め。

637 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 16:21:11 ]
実装してみたけど、NFAからDFAへの変換で躓いた俺が通りますよ。

638 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 06:48:07 ]
「^\w+$」 から 「^_+$」 だけ除外して検索したいのですが、下のような記述でよいでしょうか?
自信がないのでお願いします。たぶん Perl です。

^\w*[a-zA-Z0-9]\w*$

639 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 08:20:42 ]
Perlだとしたら違うが、Perlじゃないとしても違う

640 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 09:19:26 ]
>>638
そもそも\wは[a-zA-Z0-9_]じゃないんだが

641 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 11:35:49 ]
>>638-639
○ 1行内に、1文字以上の、空白を含まない英数単語のみ ^[0-9A-Za-z_]+$ であればマッチする、
○ 但しアンダーラインのみ ^_+$ の連続は単語ではない。
正規表現はPerlの機能の一部として含まれる。すなわち、Perlには正規表現の機能が入っている。
正規表現で出来なくてもPerlなら出来る。

642 名前:デフォルトの名無しさん [2009/12/02(水) 12:35:03 ]
perlです。
$str="aa(bb)cc";
$ptn="aa(bb)cc";
のとき、
$str=~/$ptn/;
みたいな書き方でマッチさせたいんですが括弧が邪魔して無理でした。
$strと$ptnの内容は上記のままで、正規表現でマッチさせるにはどう書けば良いのでしょうか?

643 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 12:40:54 ]
>>642
そういうのはperlのスレで聞けよ。

$quoted_ptn = quotometa($ptn);
$str =~ /$quoted_ptn/

または

$str =~ /\Q$ptn\E/

644 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 12:42:56 ]
ごめんtypoしてるわ。

quotemetaが正解



645 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 12:51:49 ]
>>643
いけました。
どうもすいませんでした。
そして、ありがとうございました。


646 名前:427 [2009/12/03(木) 21:59:36 ]
前方一致(前方参照)について教えてください。

●正規表現の使用環境
秀丸7.11 HMJRE.DLL1.92

●検索か置換か?
検索

●説明
改行(空行)に挟まれたaだけを検索したい

●対象データ


a

a
a


●希望する結果


a ←これだけマッチしてほしい

a
a


647 名前:デフォルトの名無しさん [2009/12/03(木) 22:00:06 ]
以下を試しましたがダメでした。
(?<=\n\n)a(?=\n\n)
(?<=^$)a(?=\n\n)

バラして試したところ、どうも後方一致で改行は認識してくれるみたいですが、前方一致では改行はダメのようです。
(?<=\n\n)a ←ダメ
(?<=\n)a ←ダメ
a(?=\n\n) ←OK

そこで知りたいのは、
前方一致で改行を使えないのは仕様でそうなっているからでしょうか?そうした記載を見つけることが出来ませんでした。
また改行(空行)に挟まれた文字を検索する方法がありましたらぜひお教えください。

648 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 22:22:43 ]
>>647
前方一致って look-behind のこと指して言ってんの?
それはともかく、秀丸は改行絡みの扱いが弱いから制限事項でない?



649 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 22:33:51 ]
>>646
マッチして欲しいaが空行に挟まれてないじゃん

650 名前:デフォルトの名無しさん [2009/12/03(木) 23:42:48 ]
秀丸v8β28なら (?#fulllinematch)\n(a)\n\n(?\1) でできるみたい

前方一致は秀丸で使われている独自用語。一般用語では648のとおり。




651 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 23:50:50 ]
"(a b)(c d e)"
こういう文字列を
(a b)と(c d e)に分割する事って出来ませんか? 出来ればrubyでお願いします

652 名前:650 [2009/12/03(木) 23:52:40 ]
おっと間違えた。
(?#fulllinematch)\n\n(a)\n\n(?\1) だ

653 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 00:46:20 ]
r = /(\(+)
([^\(]+)
(\)+)
/x

"(a b)(c d e)" .scan(r).map do |m|
puts m.to_s
end


654 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 00:51:04 ]
ありがとうございます
追加で悪いんですが・・・
"(a b)(c (d e))" もし、こういうネスト構文になった場合
正規表現での分割は無理でしょうか?
(a b)
(c (d e))



655 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 02:39:38 ]
>>654
全ての場合に対応するのは無理

656 名前:646 [2009/12/04(金) 07:03:25 ]
>>650
ありがとうございました。
なんか最新βからfulllinematchなるものが使えるようになったみたいですね。
実にタイムリーでした。
おまけに (?<=\n\n)a を実行すると「前方一致では改行文字は使えません」なメッセージも表示するようになっていました。
で、「前方一致」って秀丸独自だったんですね。以後注意します。


657 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 20:12:15 ]
>>653
を少し改良してみて
p "(a b)(c d e)test".scan(/(\([^\(]*\))/)
こうなったんですが
何故^\(を[]で囲わなきゃいけないんでしょうか?

↓のようにかいても意味は同じだと思うんですが動かないんです。かき方が違うんでしょうか?
p "(a b)(c d e)test".scan(/(\(^\(*\))/)
p "(a b)(c d e)test".scan(/(\(.*\))/)

658 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 20:24:08 ]
正規表現では、[]で囲まれると、他の部分と意味が変わって、
たとえば [^\(] の場合、( 以外の任意の一文字、という意味になる。

659 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 20:34:02 ]
>>658
^この否定は[]の中でしか使えないんですかね
(a b)と(c d e)に分割するには/(\([^\(]*\))/これが最小コードとなるんでしょうか?

あと>>653さんのかいた//x のxの意味もよくわからず消してしまったんですが、xをつけると何が変わるんでしょう?

660 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 21:00:25 ]
>>658
[]の中の(はエスケープいらんだろう。

>>659
オマエはマニュアル読むって頭を持ってないのか?


661 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 21:20:50 ]
>>660
だって、早く簡単にわかるならそのほうがいいじゃないですか。


662 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 23:11:59 ]
うわぁぁぁ

663 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 23:52:52 ]
>>660
//xについての記述はぐぐりにくいので見つけられなかったです

664 名前:デフォルトの名無しさん mailto:>>661 [2009/12/05(土) 00:03:30 ]


       | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
       |                    |
       |                    |
       /    ̄ ̄ ̄ ̄      /
       /  ぶち殺すぞ     /
     /              /
     /              /
    /   ____     /
   /             /
 /             /




665 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 00:05:30 ]
確かに調べるのめんどくさいんですが、
2chはいつから喰わず嫌いをはじめたのか、質問したい

次の方どうぞ

666 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 11:36:21 ]
釣りはいいから。獣の数字げっと

667 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 12:02:56 ]
鬼車でひいひいいわせてやるよ

668 名前:デフォルトの名無しさん mailto:sage [2009/12/11(金) 15:49:19 ]
諸君、進んでおるかね?

669 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 18:46:12 ]
●正規表現の使用環境
otbedit(www.hi-ho.ne.jp/a_ogawa/otbedit/index.htm)というエディタです。
(emEditorでは行をまたいだ置換がうまくいかずotbeditに変えました。使えればソフトにはこだわりません)
Perl互換の拡張正規表現が使えるとのことですが、詳しい説明が書いておらずわかりませんでした。

●検索か置換か?
置換

●説明
特定の文字列の間にある空でない文字列の最後に任意の文字列を加えること
(例では@Bと@Aの間にある空でない文字列の最後にaを付け加えたい。できればそれから@Aと@Bは除外したい)
【@B(.|[\r\n])*?@A】で全体から特定の範囲を指定した後で
【[^\n]+$】→【$&a】の置換の繰り返しで可能ではありましたが、数が多いのでできれば一括で置換したいです。

●対象データ

@A
あいうえお
@B
かき

っくけこ
さしす
@A
せそたち
つてと
@B
なにぬね
のは
@A
ひふへほ

670 名前:デフォルトの名無しさん [2009/12/15(火) 18:49:00 ]
●希望する結果

@A
あいうえお
@Ba
かきa

っくけこa
さしすa
@Aa
せそたち
つてと
@Ba
なにぬねa
のはa
@Aa
ひふへほ




↑できれば@Aや@Bにaをつけたくはありません

671 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 04:39:29 ]
ゼロ幅アサーション

672 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 01:54:38 ]
誰かCで正規表現できるクラス作れよ
BOOST使いづらすぎる

673 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 02:34:55 ]
CじゃなくてC++です

674 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 04:07:23 ]
Boost Regex++じゃ駄目なのか



675 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 14:59:11 ]
Boost使いづらいです・・・

676 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 15:27:52 ]
xpressiveもだめ?

677 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 17:04:49 ]
今出先なので、帰ったら見てみます

678 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 18:28:13 ]
鬼車ってどうなんでしょうか?

679 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 19:27:41 ]
どうって?

680 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 22:41:42 ]
性能?

681 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 23:06:52 ]
鬼車って確か検索機能しかないよね(置換機能が無い)
置換を自力で実装するの面倒なんで代わりにbregonig.dllとか使うんだけど
文字コードsjisしか使えなくて勿体無いあああってなる

682 名前:デフォルトの名無しさん [2009/12/25(金) 19:56:08 ]
●正規表現の使用環境
perl5.8.7 CentOS 5.3
文字コードはEUCです。

●検索か置換か?
置換

●説明
全銀テレ為替文字対応のため、数字、大文字英字、半角カナ・濁点、一部半角記号記号のみの文字列に
変換したいのです。
可能文字はこちら
ttp://www.kyodocms.jp/qanda/qa18.htm

これら以外の文字を半角スペースに置き換えたいのです。

●対象データ

任意の文字列です。

1.ひらがな→カタカナ変換
2.全角→半角変換
3.英小文字→英大文字変換
4.ァィゥェォッャュョをアイウエオツヤユヨに変換

ここまで出来てて、入力可能文字以外をスペースに置き換えたいんですが、上手くいきません。
どうすればいいでしょうか?


683 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 20:29:25 ]
[^0-9A-Zアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン゛°\\,\.「」\(\)\-\/]


に置換
あってるかどうかは試してないけどこういうこと?

684 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 22:49:43 ]
>>683
レスどうもです。そのとおりです。
>>682の条件を変数$regExpに代入し、

$result = 'パ-カ-ヲ買ツタ01234567';
$result =~ s/$regExp/ /g;

とすると、漢字だった部分が文字化けし、「パ-カ-ヲ ・糟・1234567」となってしまいます。
結果は「パ-カ-ヲ ツタ1234567」にしたいのです。




685 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 00:05:51 ]
未定義領域含んでるんじゃね?
文字の正規表現
www.din.or.jp/~ohzaki/perl.htm#Character

686 名前:デフォルトの名無しさん [2009/12/26(土) 00:26:46 ]
質問があります。
<div id=・・・>←1
   <div id=・・・>
   </div>←2
   <div id=・・・>
   </div>←3
</div>←4
抜き出したいのは1から4全体なんですけど
"<div id=・・・(.+?)</div>
で非欲張り系で抜き出すと1から2までヒットします。
1から4全体を抜き出す方法ていうのはないのでしょうか?
XML形式ならいけるぽいのですが・・・
無理なのでしょうか?



687 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 01:52:00 ]
対応するタグという意味なら田中スペシャルが使えればできる。

688 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 08:16:39 ]
ていうか素直にXMLパーサ使え

689 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 12:19:49 ]
HTMLの処理には正規表現ではなくHTMLパーザを、XMLの処理にはXMLパーザを。

テンプレに入れてもいいレベルのFAQ。


690 名前:デフォルトの名無しさん [2009/12/27(日) 02:55:21 ]
わかりました。パーサを調べてみます

691 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 18:29:47 ]
文字列を分割するとき、特定の文字で囲われているものは除外するっていう方法ありますか?
phpなんですけど
preg_splitで例えば
A,B,C,'D,E',F

[0]=A
[1]=B
[2]=C
[3]=D,E
[4]=F

上記のように分割できますか?

692 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 18:34:35 ]
普通にCSVのモジュール使えばいいのでは

693 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 19:36:26 ]
>>691
詳説 正規表現 にCSV処理のサンプルあるよ。オヌヌメ

694 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 15:29:52 ]
●正規表現の使用環境
Java1.5(Firefox 3.0.16)

●検索か置換か?
検索

●説明
\.nas(3|5)\d+\.[a-z\-]+\.nttpc.ne.jpという文字列を検索したいです。
※検索対象の文字列自体が正規表現のようになっています。

●対象データ
\.nas(3|5)\d+\.[a-z\-]+\.nttpc.ne.jp

●希望する結果
\.nas(3|5)\d+\.[a-z\-]+\.nttpc.ne.jp
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
※完全一致


自分なりに\を付けたりして試してみたのですが出来ませんでした。
以上、どうかよろしくお願いします。



695 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 17:02:17 ]
文字列定数内の \ 自体を \\ とするエスケープまで含めて
"\\\\\\.nas\\(3\\|5\\)\\\\d\\+\\\\\\.\\[a\\-z\\\\\\-\\]\\+\\\\\\.nttpc\\.ne\\.jp"
となる

696 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 10:01:19 ]
>>695
694です。
どうもありがとうございました。
すごく長い表現になっちゃうんですね。(汗







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

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

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