正規表現道場@2ch
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001ヽ(´▽`)ノ
2001/07/26(木) 09:03ID:???でもperlを使いのなす上で避けて通れない道だったりするかもです。
そこで、スクラップブック的に目に止まったカッコイイ正規表現を
書き留めておこうと言うスレッドです。
質問する時は言語と、得たい結果をなるべく詳しく書いてね。
取り合えず僕が知ってる有用なリンクです。
http://www.din.or.jp/~ohzaki/perl.htm
http://www.kt.rim.or.jp/~kbk/regex/regex.html
もっとイイ(・∀・) リンクは>>2-10さん辺りが書いてくれるカモ・・・・
0951nobodyさん
02/11/24 22:32ID:???それ、Regular にはマッチしないんではないかと。
特殊なページ名にマッチして欲しくないなら
特殊なページ名は増えてくだろうから
マッチしてからきりだして比較のほうがすっきりすると思う。
0952nobodyさん
02/11/24 22:47ID:???じゃあRegularExpressionsにマッチしないようにしたいと読み替えてください。
マッチしてから比較ですか。どうしようかな。
というのも(PukiWikiなんですが) マッチしたりする部分は深いところにあるので、
自分の技量じゃ改造できそうにないんです。
それでFAQ見たら ttp://pukiwiki.org/index.php?%5B%5BBugTrack%2F146%5D%5D
$WikiNameの正規表現を弄ればいいとなってまして。
次スレ立てますね。
0953nobodyさん
02/11/24 23:01ID:???http://pc.2ch.net/test/read.cgi/php/1038146241/
移行前に>>950の質問にアドバイスくれるとありがたい :-p
0954nobodyさん
02/11/24 23:18ID:???変に凝った正規表現にしちゃうと
メンテナンス性、速度の二点において不利になるかと。
PukiWiki のサイトでリクエストしてみたら?
指定した単語リストを WikiName として自動認識しない処理がほすい、ぐらいで。
0955nobodyさん
02/11/24 23:45ID:???しかしそのリクエストはWikiの存在理由に関わるのでなかなか取り入れてもらえないのです。
過去に数回要望があったみたいなんですが。
しかしプログラミング言語の型名とか(の途中が)勝手にWikiNameになると
気持ち悪くてしょうがないなぁ。
CClassNameとかだとClassNameだけ引っかかっちゃうんですよね。
この場合↑も引っかかるように変えれば気持ち悪くはなくなるのか。
0956nobodyさん
02/11/24 23:52ID:???文脈を読んで WikiName にして欲しいよね。どうせなら。
関数名とか意味あるとこだけ。
ちなみに私は
$WikiName = '([A-Z][a-z]+([A-Z][a-z]+)+)';
による自動マッチ自体不要派です
英語圏じゃ便利かもしれないけど
日本語ではいまいちだし、
今みたいにサイトを作る、っていう目的で運用されることが多い中、
意図しないところでリンクされるのは邪魔でしかない。
それに、PukiWiki はアイデアメモとかそういう方向進んでないし。
ってスレ違いだな・・・。
0957nobodyさん
02/11/27 09:56ID:???@array = /(\S+)/g;
$top=@array[0];
$bottom=@array[1];
$rval=@array[2];
$lval=@array[3];
よりみじかく書けますか?
0958nobodyさん
02/11/27 12:32ID:???配列 @array を再利用するなら
($top, $bottom, $rval, $lval)= @array= /(\S+)/g;
0959nobodyさん
02/11/27 16:47ID:YQilorq2だろう。
0960nobodyさん
02/11/27 16:48ID:???m 使うより速い(はず)
0961nobodyさん
02/12/19 08:48ID:???【日本語の正規表現】がどうしてもめんどくさい時に
KAKASIなどを使って`テキスト'を【ローマ字の読み】に変換してから正規表現にかけます。
その後、変換された`テキスト'を元の【日本語のテキスト】に
戻すことができればいいのですが、この方法を誰かしりませんか?
KAKASIで変換する際に【漢字⇔読み】の変換テーブルを生成してくれれば
話は楽なのですが、何か良い方法ないないでしょうか?
スレチガイ、スマソ。
0962nobodyさん
02/12/19 17:36ID:???[^y]は文字の否定ですよね?
「yahoo以外」
という風に
文字列の否定
はどうやるのでしょうか?
0963nobodyさん
02/12/19 21:43ID:???0964nobodyさん
02/12/20 10:56ID:???w3m -dump http://www.city.sendai.jp/kankyou/toshisuishin/guide/02/01.html >event.txt
でテキスト化したテーブルを
"┌"
で区切り文字として、テーブル毎に1ファイル生成したいのです。
分割の際は、csplitコマンドを使いたいのですが、こいつはマルチバイトに対応していない
ので、odなどで調べて実際のコードでマッチさせたいのですが、
やり方がわかりません!!
event.txtの中には"┌"が12個あるので、イメージとしては
% csplit -f table_ event.txt /"┌"/ {12}
こんな感じですが、
マルチコードがダメなんで、
% csplit -f table_ event.txt /"『ここにコード』"/ {12}
としたいのです!!
どなたかアドバイス下され!
困っております!
0965964
02/12/20 10:57ID:???↓
24個
の間違いでした。
0966nobodyさん
02/12/22 18:48ID:JvN7Mbhl$a = "<ul><\/p><p><li><\/li><\/p><p><\/ul>";
$a =~ s/(<ul>.*?<\/ul>)/\1 = s/<\/p><p>//g;/g;
↑こんな書き方はないみたいですけど、なんとなく私のやりたいことは分かってもらえるかと思ったので、ちょっと書いてみました・・・
うまく説明できないのですが、<ul> タグ間にある <p> タグを取り除きたいのです。
なにか良い方法はないでしょうか?
0968nobodyさん
02/12/22 20:56ID:???ブロックのネスティングがおかしいように思うけれどんも。
0969966
02/12/22 22:49ID:JvN7Mbhl<ul>の中の<p>にマッチする表現とは、どのように書けば良いのでしょうか?
0970966
02/12/22 22:51ID:JvN7Mbhl<ul>の中の<p>にだけマッチするように表現・・・できますか?
私などでは、まったく分かりません・・・
0971nobodyさん
02/12/22 23:39ID:JvN7Mbhls/(<ul>).*?<\/p>.*?(<\/ul>)/\1\2/g;
↑こうやる・・・とか ^^; ?
0972966
02/12/22 23:42ID:JvN7Mbhl0973966
02/12/22 23:45ID:JvN7Mbhl$a =~ s/(<ul>.*?)<\/p>(.*?<\/ul>)/\1\2/g;
↑これを 100 回くらい繰り返せば、まず大丈夫・・・って、なんてアホな方法 ^^;
0974nobodyさん
02/12/22 23:48ID:???良く分からんけど
while($text =~ s|(<ul>.*)</?p>(.*</ul>)|$1$2|){1;}
とかループで回してみたり。
一歩間違うと無限ループ直行ですが。
0975v
02/12/22 23:51ID:9dxCZgOh0976966
02/12/23 00:03ID:VBUKjkTDあ!なるほど、ループすれば良かったのか!!
どうもです、やってみます。
0977nobodyさん
02/12/23 01:06ID:???<ul>が複数あると結局ループを使ってしまうけど。
0978nobodyさん
02/12/23 01:29ID:???0979977
02/12/23 21:51ID:???<ul></ul>間が取り出せれば一回で済むってことが言いたかったのです。
0980nobodyさん
02/12/24 15:29ID:???0981nobodyさん
02/12/24 18:10ID:Hyg/Prvkぜんぜん知らなかった・・・ ^^;
0982nobodyさん
02/12/24 18:55ID:YHFX+I6W0983nobodyさん
02/12/24 18:55ID:YHFX+I6W0984nobodyさん
02/12/24 18:56ID:YHFX+I6W0985nobodyさん
02/12/24 19:28ID:???0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
^^;
0986nobodyさん
02/12/25 00:55ID:???>>966
sub match{
my($temp) = $_[0];
$temp =~ s/(<p>|<\/p>)//g;
return $temp;
}
$a = "<ul><\/p><p><li><\/li><\/p><p><\/ul>";
$a =~ s/(?<=<ul>)(.*)(?=<\/ul>)/&match($1)/eg;
print $a;
レス数が950を超えています。1000を超えると書き込みができなくなります。