正規表現 part4
..
49:デフォルトの名無しさん
07/08/20 19:13:58
>>45
perlは知らんが、s/ +/_/g かs/ */_/g 同様のことをすればいいだけだろ。
初歩中の初歩だ。
それから、日本語読みは「れぎゅらーえくすぷれっしょん」だな。
50:デフォルトの名無しさん
07/08/20 19:14:52
たとえばURLの末尾が html? で終わってるかどうか
正規表現で判定するとして
html?$ と
\.html?$
ではどちらが高速なのでしょうか?
言語は C++ なのですが…
51:デフォルトの名無しさん
07/08/20 19:21:00
>>50
速度の問題は、実測ありき。
52:デフォルトの名無しさん
07/08/20 21:38:24
高速どうこういう以前に html?$ と \.html?$ は意味が違うと思うんだが・・・
53:デフォルトの名無しさん
07/08/20 22:12:50
>>52
単純に末尾がhtmlまたはhtmで終わってるかの判断でラクをするか
拡張子ということで\.もちゃんと書くか、の違いのつもりです。
54:デフォルトの名無しさん
07/08/20 22:17:50
\.html?$ の方が速いと予想。
開始文字が . だから、まず文字列中から . を検索するでしょ。
. は h よりも出現個数が少ないと思われる。
55:デフォルトの名無しさん
07/08/20 22:29:41
>>54
なるほど…参考になりました。
テストしてみます。
56:デフォルトの名無しさん
07/08/20 23:11:24
>>45 難しく考えることはない。そのまま読めばいいんだよ。
regexp ・・・ レジェックスップ (Regular Expression の略です)
ちなみに、
UFO ・・・ ユーフォー (Unidentified Flying Object)
WGA ・・・ ウガ (Windows Genuine Advantage Notifications)
USA ・・・ ウサ (United States of America)
IME ・・・ イメ (Input Method Editor)
57:デフォルトの名無しさん
07/08/20 23:30:31
Regex/RegExpは許せるがRegexpは許せないよな?
58:デフォルトの名無しさん
07/08/21 00:11:46
レジイーエクスピーって読んでる。
ユーエスエーだし、アイエムイー。
こういう読み方って個人で色々あって面白いな。
59:デフォルトの名無しさん
07/08/21 00:15:35
「れぐえくすぷ」って読んでた。
60:48
07/08/21 01:15:56
同じく「詳説正規表現」には、
"regex" の "g" は "Regina" でなく "regular" の発音で、
"FedEX" と同じようなリズムで読むとある。
カタカナ読みだと「レゲックス」か「レグエックス」あたりが近いかな?
漏れは、 "regex" は「レジェックス」って読むけど、
"regexp" は「レグエックスピー」って読んでるな。
61:デフォルトの名無しさん
07/08/21 02:16:25
レグェックスプ
62:・∀・)っ-○◎●
07/08/21 04:32:36
ラジェックスp
63:デフォルトの名無しさん
07/08/21 10:15:53
レグイーエックスピー。
このべた過ぎる読み方が多数派だと思う
64:56
07/08/21 13:33:47
バカだなおまいら。わざわざ分かりやすくボケてやったら、真に受けやがって。
あのな、regexp (あるいは regex) はな、Regular Expression の略語なんだ。
略語にさ、必ず読み方があるとは思うなよ。
UFO ・・・ ユーフォー は、たまたま語呂がいいからそう読まれているだけで、
大多数は、
WGA ・・・ ダブル・ジー・エー (アルファベットそのまんま)
USA ・・・ ユー・エス・エー (同上)
IME ・・・ アイ・エム・イー (同上)
でいいんだよ。
よって、regexp は「レギュラエクスプレッション」でいいし、「せいきひょうげん」と読んでもいい。
65:デフォルトの名無しさん
07/08/21 13:36:56
誰も56を相手にしていなかった件
66:デフォルトの名無しさん
07/08/21 13:43:00
>>64
UFOはそもそもフライングソーサーの間違いだそうだw
それは兎も角、nativeは一文字ずつ発音しているね。
67:デフォルトの名無しさん
07/08/21 13:50:19
いや一文字ずつ発音する人もそうでない人も両方いるよ
最近は日本の胡散臭い番組でもユーエフオーって言うようになってる
68:デフォルトの名無しさん
07/08/21 14:05:58
ほぉ、Websterでは一字ずつの発音しか書いてなかった。
69:デフォルトの名無しさん
07/08/21 14:11:30
原則的には 3文字未満は一字ずつ、 4文字以上は単語として読めるものはその読み方、
とおじいちゃんが言ってた。
70:デフォルトの名無しさん
07/08/21 14:15:10
>>64
まずは、短縮形と acronym を一緒くたに語って、「よって、〜」と演繹するのをやめるところからはじめてみよう。
71:デフォルトの名無しさん
07/08/21 14:23:04
<abbr><acronym>論争を髣髴とさせるなw
72:45
07/08/21 14:27:55
あれ、なんか話がこじれてる・・・?
>>48
>>49
ありがとうございます。そう書いたつもりだったんですが、+のつけ忘れだったのかもしれません。
読み方は
>>63
のレグイーエックスピーが良いかと
73:デフォルトの名無しさん
07/08/21 14:53:49
自分は心の中でレグエクスプと読んでます
74:デフォルトの名無しさん
07/08/21 15:13:27
私は「れぎゅえくすぷ」だなぁ。
75:デフォルトの名無しさん
07/08/21 16:09:08
Falseをフォルスと読むかファルスと読むかの違いみたいなもんだな。
俺はファリスのほうが好きだ
76:デフォルトの名無しさん
07/08/21 16:09:47
それは違うだろ
77:デフォルトの名無しさん
07/08/21 16:13:52
レグエキスプに一票
78:デフォルトの名無しさん
07/08/21 16:14:09
ヌル、ニル、ナルの違いか
79:デフォルトの名無しさん
07/08/21 16:24:57
>>75
それは、英語の発音を日本語でどう発音するか、という話しだと思うけど、
Regexp の場合はそもそも英語でどう発音するか決まってないのが問題と思われ。
80:デフォルトの名無しさん
07/08/21 16:30:56
>>78
NULL、nil、NUL
と言う冗談はさておき、falseのalはallのalと同じ発音だから「ファルス」は無理があると思う。
81:デフォルトの名無しさん
07/08/21 16:39:33
読み方ネタは盛り上がるねえ。
これからもネタがないときは定期的に投下することにしよう。
82:デフォルトの名無しさん
07/08/21 16:41:55
おう 頼んだ
83:デフォルトの名無しさん
07/08/21 18:46:52
>>66
フライングソーサーはUFOの一種ですよ。
それが何であるか識別できなければ鳥だってUFOです。
ユーフォーの呼び方を広めたのはピンクレディじゃなかろうかのう(じじいの繰り言)。
84:デフォルトの名無しさん
07/08/21 18:54:43
>>64
関係ないけどトランプの柄にUSADAMONってのがあってずっとUSAダモンかと思ってたんだよ
そしたらウサダモンだってさ。ローマ字かよってすげえ突っ込みたかったね
85:デフォルトの名無しさん
07/08/21 19:00:41
flying saucer=空飛ぶ受け皿
unidentified flying object=正体不明の飛行物体
86:私ゃアシモフのシンパだで
07/08/21 21:55:40
>>83
確認できてしまった段階で、UFOではなくなってしまうわけでして。
87:デフォルトの名無しさん
07/08/22 17:36:21
HTMLタグのアトリビュートの囲い文字「"」なり「'」を
全部削除する正規表現がわかりません。
PHPのpreg_replace()で使いたいのでperl互換正規表現で
何かしらの情報をいただければ幸いです。
失礼いたします。
88:デフォルトの名無しさん
07/08/22 18:05:45
そういうのはHTMLパーサ使うべきじゃね
89:デフォルトの名無しさん
07/08/22 20:40:13
$httdat = preg_replace('/"/', "", $httdat);
じゃなくって?
90:デフォルトの名無しさん
07/08/23 00:25:37
$html = str_replace("'", "", $html);
$html = str_replace('"', '', $html);
とか・・・
91:デフォルトの名無しさん
07/08/23 11:28:01
タグのなかの"だけ取りたいんじゃないの?
92:デフォルトの名無しさん
07/08/23 19:53:44
じゃ、タグだけ取り出して、
$tag = str_replace('"', '', $tag);
とかで " を削除して、元の html にハメ込めばいいやん。
<body>
<a href="img/unko.jpg">"うんこ"の画像</a>
</body>
↓
1.<body> を取り出す ⇒ なにもしない。
2.<a href="img/unko.jpg"> を取り出す⇒ " を削って元にハメ込む。
3.</a> を取り出す ⇒ なにもしない。
4.</body> を取り出す ⇒ なにもしない。
↓
<body>
<a href=img/unko.jpg>"うんこ"の画像</a>
</body>
正規表現とか、そういう以前の、プログラミングの基礎の問題な気がする。
93:デフォルトの名無しさん
07/08/23 19:58:38
じゃ、タグをどうやって取り出すんだい?
→>>88に戻る
94:デフォルトの名無しさん
07/08/23 20:00:32
というより、正規表現一発ではできないというのが正解
95:デフォルトの名無しさん
07/08/23 22:31:37
ヒントだけじゃダメなようだね。こんなコードでどうだ?
<?php
$html = '<body>
<a href="img/unko.jpg">"うんこ"の画像</a>
</body>
';
$result = '';
while (preg_match('/^(.*?)(<.+?>)(.*)$/s', $html, $s)) {
$result .= $s[1];
$tag = $s[2];
$html = $s[3];
$tag = str_replace('"', '', $tag);
$tag = str_replace("'", "", $tag);
$result .= $tag;
}
echo $result;
?>
ツッコミどころはあるかもしれないが、
わかりやすいコーディングを心がけたから、効率は二の次な。
あと、インデントに漢字の空白つかってるから、そのままコピペじゃ動かんよ。
どうもこの掲示板、コードを正しく貼り付けられないからプログラミングの話題には向かないなぁ。
96:デフォルトの名無しさん
07/08/23 23:08:09
>>95
>>88でFAなのに、何故そんなコメントやCDATAにも対応してない穴だらけのコードを
撒き散らすのか
馬鹿はこれだから困る
97:デフォルトの名無しさん
07/08/23 23:31:43
ようは扱いの簡単なHTMLパーサ(リーダー)があればいいのかな。
98:デフォルトの名無しさん
07/08/23 23:42:21
>>88 それのどこが正規表現w
99:デフォルトの名無しさん
07/08/23 23:44:28
Rubyスレでお勧めHTMLパーサ教えてって聞くとRegexpって答えが返ってきます
>>95
<img alt="hoge's image" ...でアウト
100:デフォルトの名無しさん
07/08/23 23:46:01
attribute の引用符を外したい、という時点で一体何を考えてるのやら、と思ってしまった俺ガイル。
101:デフォルトの名無しさん
07/08/24 00:33:01
ほらほら、また情報小出しが始まった。
102:デフォルトの名無しさん
07/08/24 00:52:01
>>87はもういないだろ
103:デフォルトの名無しさん
07/08/24 02:33:08
>>101 には何が見えているのだろうか?
104:デフォルトの名無しさん
07/08/24 21:20:49
全角のタブってどうあらわすんですか?
105:デフォルトの名無しさん
07/08/24 21:49:33
全角のタブって何だよ
106:デフォルトの名無しさん
07/08/24 22:14:31
>>105
全角のタブはx-jisで定義されてる
スレリンク(hack板)
107:デフォルトの名無しさん
07/08/24 22:34:33
>>99
1. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
ちょっとは自分で考えろよ。応用力の無いヤツには何を教えても無駄。
もうこれが最後だからな。
<?php
$html = '<body>
<a href="img/unko.jpg" alt="kuso\'s image">"うんこ"の画像</a>
</body>
';
$result = '';
while (preg_match('/^(.*?)(<.+?>)(.*)$/s', $html, $s)) {
$result .= $s[1];
$tag = $s[2];
$html = $s[3];
$tag = preg_replace('/="(.+?)"/', '=$1', $tag);
$tag = preg_replace("/='(.+?)'/", '=$1', $tag);
$result .= $tag;
}
echo $result;
?>
108:デフォルトの名無しさん
07/08/25 00:31:43
>>106
初めて知った・・・
109:99
07/08/25 07:41:35
>>107
俺は>>87じゃないよ
で、<!-- <a alt="hoge's image" ...> --> でアウト
110:デフォルトの名無しさん
07/08/25 11:25:12
1. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない
111:デフォルトの名無しさん
07/08/25 11:29:59
糞コード張って悦に浸ってる馬鹿を煽ってるだけと気づけ
112:デフォルトの名無しさん
07/08/25 11:57:48
>>109 せんせい、1+1って何ですか?
>>107 ここにリンゴが1個あるだろ。そこにもう1個リンゴをを置いてごらん、2個になっただろ?
これが1+1だ。答えは2になる。
>>109 じゃぁ1+2は?
>>107 同じように考えればいいさ。1個のリンゴがある。その横にあと2個リンゴを置けば・・ほら、3個になっただろ?
これが、1+2だ。答えは3になるんだよ。
>>109 わぁ、すっごいなぁ。
>>107 じゃぁ、問題出すよ。1+3は?答えられるかな???
>>109 せんせい、それはまだ習ってません。答えられませ〜ん。
ダメだこりゃw
113:デフォルトの名無しさん
07/08/25 12:00:04
糞コードは張ること自体が罪。いい経験になっただろ?
114:デフォルトの名無しさん
07/08/25 12:23:19
浅はかな回答者の糞コードへのツッコミを、どうしても理解力の足らない
質問者の質問ということにしたいらしいねぇ
>>88より後は、全部無駄レスじゃん
115:デフォルトの名無しさん
07/08/25 13:20:24
stickam.jp むてきんぐ
URLリンク(www.stickam.jp)
stickam.jp KGKGKG
URLリンク(www.stickam.jp)
116:デフォルトの名無しさん
07/08/25 14:07:57
>>113
自分のこと言われてると気付いてないみたいよ。
117:デフォルトの名無しさん
07/08/26 18:43:44
環境は秀丸です
「前の行末がピリオド&行末がピリオドでない行」
の前後に空行を入れたいのですが、どう書けばいいのか教えてください
Hoge hoge.
Moge moge.
Title
Hoge hoge.
Moge moge.
を下のようにしたいのです。
Hoge hoge.
Moge moge.
Title
Hoge hoge.
Moge moge.
([^\n]*)[^\.]\n ⇒ \n\n\1\n\n とか考えてみたけどダメですた
118:デフォルトの名無しさん
07/08/26 19:19:40
これでどう?
^(.*[^.])$
119:デフォルトの名無しさん
07/08/26 19:21:22
>>117
やる気あるのか?
バカは諦めなさい。
120:デフォルトの名無しさん
07/08/26 19:34:09
>>117
↓スマートじゃないけど。
検索文字列:
\.\f\n.*[^.]\n\f
置換文字列:
.\n\1\n
121:デフォルトの名無しさん
07/08/26 19:43:28
>>120
サンクス
ばっちりでした
>>118
なんか秀丸って行頭行末をまたぐときとかって、$^とかうまく反応して
くれないんですよね >>120でいけました 118もありがとう
122:118
07/08/26 19:51:27
自分のは完全な誤答だったよ(´・ω・`)出直してきます
123:デフォルトの名無しさん
07/08/26 20:00:21
> ^(.*[^.])$
顔文字っぽく見える
124:デフォルトの名無しさん
07/08/26 22:09:35
基地害じゃね?
125:デフォルトの名無しさん
07/08/27 12:32:15
JavaScriptでの「?:」の意味を教えてください。解説サイトでも可です。
よろしくお願いします。
126:デフォルトの名無しさん
07/08/27 13:19:04
なんでこう、混乱する訳ばかりなんだろうな。
正規表現というのは、例えば
「円周率は3.13」
という誤りを
「円周率は3.14」
と、正しく書くこと。
127:デフォルトの名無しさん
07/08/27 13:30:30
正則表現とでも呼んでおけ
128:デフォルトの名無しさん
07/08/27 15:40:01
>>125
キャプチャなしの括弧
URLリンク(developer.mozilla.org)
129:125
07/08/27 16:15:47
>>128
ありがとうございました。
130:デフォルトの名無しさん
07/08/28 17:24:44
javascriptかperlなのですが
(fire|fighter|future|fusion) と (fi(re|ghter)|fu(ture|sion))
のような場合はどちらが高速でしょうか?
131:87
07/08/28 18:21:10
87です。
こちらを見に来るのをすっかり忘れてしまっておりました!
大変申し訳ございませんでした。
>>88様
HTMLパーサを使うほうが良いとのご忠言、ありがとうございます。
その方向も模索させていただきます。
>>89,90様
>>91様のご指摘通り、HTMLタグのアトリビュートの"'のみを外したいと
考えておりました
>>92,95様
具体的なサンプルまで作成頂きまことにありがとうございます。
なるべく正規表現のみで実現できないかを模索しておりましたので、
その方法を選択肢から排除しておりました。申し訳ございません。
>>94様
なるほど、やはり正規表現の1発処理は諦めたほうが良いのですね。
>>97様
大賛成です。
>>100様
良いか悪いかは別としまして、モバイルサイトで出力されるHTMLを極力
シェイプアップさせるべく、アトリビュートの囲み文字を一括ではずす
ことがしたかったのです。
>>102様
失礼しました。確かにおっしゃる通りです。申し訳ございません。
132:デフォルトの名無しさん
07/08/28 18:26:41
やる気のないやつにはろくな回答が返ってこんわな
133:デフォルトの名無しさん
07/08/29 13:44:15
>>130
>(fire|fighter|future|fusion)
こんなことするんだったら連想配列つかえよw
134:デフォルトの名無しさん
07/08/29 21:49:22
>>130
っ Benchmark
135:デフォルトの名無しさん
07/08/30 01:14:58
質問させてください。
「X=\\\\\\\\ho\\,ge\\\\」を
「X=\\ho,ge」にするにはどうすればよいでしょうか?
具体的には「\\\\」を「\」一文字に、「\\,」の場合はカンマのみにしたいのです。
\\{2,4} なんかを思いついて弄ってみたんですが、さっぱりでして……
136:デフォルトの名無しさん
07/08/30 01:19:53
単に \\, を , に置換してから、
\\\\ を \ に置換すればいいんでない?
137:デフォルトの名無しさん
07/08/30 22:17:04
正規表現で000000〜ffffffまでかどうかチェックできる表現教えてちょ
138:デフォルトの名無しさん
07/08/30 22:19:52
[0-9a-fA-F]{6}
でいいかな
139:デフォルトの名無しさん
07/08/30 23:44:00
>>137のルールに加えて、左に0はいくらつんでもOKの書式を許す、
純粋にffffffまでの数字かどうかはこれでいけるかな?
(?<![0-9a-f])0*[0-9a-f]{6}(?![0-9a-f])
140:デフォルトの名無しさん
07/08/31 07:18:58
>>139
6桁というのはチェックしたいです。
141:デフォルトの名無しさん
07/08/31 11:13:52
オライリーの詳説・正規表現に載っていたHTMLのパターンを
否定(訂正)していたのを別のオライリーの本で見かけたんだけど
タイトルを忘れてしまいまして
どなたかご存じないでしょうか?
142:デフォルトの名無しさん
07/09/02 01:16:22
文字列 Aと文字列 Bを両方含んでいて順序もA→Bになっている文字列にマッチする
正規表現を教えてください。
AiiiiiiiiB にはマッチして欲しい
BiiiiiiiiA にはマッチして欲しくない
143:デフォルトの名無しさん
07/09/02 02:06:35
A.*B で何か問題が?
144:デフォルトの名無しさん
07/09/02 08:37:32
>>142
AiBiAiB
BiAiBiA
は、マッチするの、しないの?
145:デフォルトの名無しさん
07/09/02 18:40:31
Berryの設定で正規表現を使いたいのですが
「list.php?table=moe&page=1」の最後の値が1〜9999まで
マッチするような正規表現を教えていただけませんか?
正規表現むずかしい><
146:デフォルトの名無しさん
07/09/02 19:03:51
list\.php\?table=moe&page=([1-9][0-9]{0,3})$
適当
147:デフォルトの名無しさん
07/09/02 19:12:57
>>146
うわーどうもありがとう。
正規表現って便利そうだけど難しくてなかなか^^;
148:デフォルトの名無しさん
07/09/05 18:31:09
VBSで正規表現を使ってます。
URLの相対パスを正規表現でマッチさせようとしているのですが
「../」と「./」の区別が付きません。どのようにして区別させたらよいのでしょうか?
149:デフォルトの名無しさん
07/09/05 18:54:01
どっちも相対パスだと思うが
150:デフォルトの名無しさん
07/09/05 18:58:25
説明が悪くて申し訳ないです
例えば「../././abc.html」の様なURLがあったとして
「./」のをマッチさせるのに「\./」とすると「../」にもマッチしてしまうので
「./」だけにマッチさせるにはどうしたらいいのかな?と思いまして…
151:デフォルトの名無しさん
07/09/05 19:16:23
(/|^)\./
152:デフォルトの名無しさん
07/09/05 19:22:56
ありがとうございます。できました!
時間を取ってそのパターンの意味を調べさせてもらいます
153:デフォルトの名無しさん
07/09/06 17:40:38
顔文字に見えてしょうがねえ
154:デフォルトの名無しさん
07/09/09 00:58:20
正規表現があるという事は偽物表現もあるということに他ならないわけですが
どこさありますか。
155:デフォルトの名無しさん
07/09/09 01:03:36
irregular expression?
156:デフォルトの名無しさん
07/09/13 10:45:48
文字列が全て0かどうかは
^0+*
でよいでしょうか?
157:デフォルトの名無しさん
07/09/13 11:45:24
^0+$ じゃないのかな
158:デフォルトの名無しさん
07/09/13 11:59:33
>>157
ありがとうございます!
159:デフォルトの名無しさん
07/09/14 11:40:36
スレタイに●が三つ以上入ってるスレを消したいたいんだが
全然消えない…この式じゃ間違ってる?
●{1}.*●{1}.*●{1}
ちなみに消したいのはこのスレ
スレリンク(jisaku板)
160:デフォルトの名無しさん
07/09/14 11:44:31
{1}って入れる意味あるのか?
161:デフォルトの名無しさん
07/09/14 12:05:29
てか正規表現で●って使えないっぽいな…
グーグルでも●の検索結果ゼロだしどうしたものやら
162:デフォルトの名無しさん
07/09/14 12:25:52
そんなバナナ
163:デフォルトの名無しさん
07/09/14 13:34:57
>>159
前方一致ならそれでもいいはずだが、完全一致なら最後にもう一組 ".*" が必要。
164:デフォルトの名無しさん
07/09/14 14:21:58
>>161
使えるかどうかは、ライブラリおよび環境設定による。
165:デフォルトの名無しさん
07/09/14 18:54:07
やっぱり●*ですら反応しないな…レスサンクス
ブラウザのほうのスレで聞いて来るわ
>159は撤回ってことで
166:デフォルトの名無しさん
07/09/14 19:25:12
.*●.*●.*●.*
こうじゃねーの
167:デフォルトの名無しさん
07/09/14 22:07:35
>>6
格好悪い顔文字作るなハゲ
168:デフォルトの名無しさん
07/09/15 08:05:30
(●.*){3,}
とかでいいんじゃないすか(^ω^;)
169:デフォルトの名無しさん
07/09/16 00:30:09
(.*●.*){3,}
ちょっとかわゆい
170:デフォルトの名無しさん
07/09/17 08:47:49
Perlで、Cのコメント除去プログラム
$text = join ('',<>);
$text = ~S
{
(".*?")|(/\*(.|\n)*?\*/)|(//[^\n]*)
}{$1}gx;
print $text;
171:デフォルトの名無しさん
07/09/17 13:04:12
phpで文字列の中のすべての4ケタの数字にマッチする
正規表現を試してます。
が、以下のスクリプトを動かしても"1234"がマッチしません。
なにかうまい方法ありませんでしょう。
//期待する結果 0000 1234 8888 9999
$str = "aaa 0000 1234 12345 1111 hoge 4545456465 9999";
$c = preg_match_all("/^[0-9]{4,}|\s[0-9]{3,4}\s|[0-9]{4,}$/",$str,$m);
echo $c."個マッチ<br>\r";
foreach ($m[0] as $k => $t){
echo "<br>\$m[0][$k] => $t\r";
$i++;
}
172:デフォルトの名無しさん
07/09/17 17:53:23
/(?<=\s)([0-9]{4})([^0-9a-z]?)/
なんとなーくという感じになってきたんですが…、もう少し何かorz
173:デフォルトの名無しさん
07/09/17 22:49:11
解決しました !
/\b[0-9]{4}\b/ //4ケタの数字にマッチ
でいけますた、スレ汚しスマソ。
174:デフォルトの名無しさん
07/09/23 23:22:56
JaneViewのNGExで悩んでいるのですが
A A B
A B A
東京 埼玉 東京
埼玉 東京 埼玉
埼玉 千葉 埼玉
のように
((仙台|東京|名古屋).*大阪.*\2)|((仙台|東京|大阪).*名古屋.*\4)
175:デフォルトの名無しさん
07/09/23 23:37:37
すみません書きかけで送信してしまいました。
JaneViewのNGExで悩んでいるのですが
A,B,C,D…といったリストがあったとして、
A A C D D B
のように間に入らなければ検出されずに
A B A
B C B
C A B C
のようにリストの要素"AとA"や"BとB"の間に、別の要素が入っている場合を検出したいので
((A|B|C).*D.*\2)|((A|B|D).*C.*\4)
といった感じでやっています。
リストの要素が少なければ | でつないでいけばいいのですが、リストが多いととんでもない状態になりますよね。
どうすればこれをもっとスマートな表記にできるでしょうか?
176:デフォルトの名無しさん
07/09/27 21:16:09
(A|B|C|D)\s+((?!\1).)+\s+\1
とか?俺のJaneではヒットした。・・・一体何に使うのか気になる。
177:デフォルトの名無しさん
07/09/27 23:38:11
ありがとうございます。
(?!\1)でできました。
アニメサロンの延長情報確定スレに貼られている表で
邪魔な表を貼り付けられるのをあぼーんしたかったんだ。
178:デフォルトの名無しさん
07/09/28 11:42:54
正規表現で比較関数のようなことはできますか?
179:デフォルトの名無しさん
07/09/28 11:45:35
もっと具体的に
180:デフォルトの名無しさん
07/10/03 18:17:05
具体的に書いたらオマエが答えられるのかよ
181:デフォルトの名無しさん
07/10/03 18:39:11
答えられるか答えられないか具体的に判断できる
182:デフォルトの名無しさん
07/10/03 19:52:07
メーリングリスト等にもよくあるよね
内容が分かる程度に端折って書くと
「質問の仕方をしらない」等の苦情
具体的且つ詳細に書くと答えられないくせにw
183:デフォルトの名無しさん
07/10/03 22:13:05
こういう珍獣ってリアルにはいないんだよなぁ。
184:デフォルトの名無しさん
07/10/03 22:21:48
>>178=180=182
五日経っても回答得られなかった現実をきちんと見据えて、
いい加減諦めて「もっと具体的に」書いた方が良いのでは?
185:デフォルトの名無しさん
07/10/03 22:57:50
ん・・・全く意味が分からんからね。
186:デフォルトの名無しさん
07/10/03 23:54:49
こういう質問には「できません」と答えるのが大人のマナー。
187:デフォルトの名無しさん
07/10/04 00:25:03
>>184
もっと具体的に
188:デフォルトの名無しさん
07/10/04 02:24:11
もっと愚怠的に
189:デフォルトの名無しさん
07/10/04 08:37:31
hage
190:デフォルトの名無しさん
07/10/05 00:59:38
528 名前:名無し募集中。。。[] 投稿日:2007/10/05(金) 00:23:13.84 0
PHPの正規表現に詳しいやつがいたら教えてほしい
preg_replaceで置換をしたいんだが
たとえば
/sample/test/14567.jpg
というのを
/sample/test/backup/14567.jpg
というように最後の/を/backup/に置き換えるにはどうしたらいい?
いろいろ試してみたが俺のレベルじゃどうにもならんかった
191:デフォルトの名無しさん
07/10/05 01:29:35
preg_replace('/¥/([^¥/]+)$/', "/backup/$1", "/sample/test/14567.jpg");
192:デフォルトの名無しさん
07/10/05 16:25:45
知ったかぶり
193:デフォルトの名無しさん
07/10/05 22:30:53
>>190
pathinfo使えば?
194:デフォルトの名無しさん
07/10/06 10:35:59
余計なお世話
195:デフォルトの名無しさん
07/10/06 22:47:06
珍獣増えすぎwwwwwwwwwテラカオスwwwwwwww
196:デフォルトの名無しさん
07/10/06 23:56:30
[あはばば, ばばばば], あばばばば, あば, [あばばば, ば, ばばばばはば, ばば]
というような文字列があったとき、
[あはばば, ばばばば]
あばばばば
あば
[あばばば, ば, ばばばばはば, ばば]
と分割したいのですが、どのようにしたらいいでしょうか?
(\\[?.*\\]?),とかやってみたのですが全然だめでした orz
なかのあばば〜は変化します。
197:デフォルトの名無しさん
07/10/06 23:57:28
>>196
まずは >>1 を見てみて。
198:デフォルトの名無しさん
07/10/07 00:00:39
>>197
すいません、.NETのSystem.Text.RegularExpressionsのRegex.Split()で置換しています。
199:デフォルトの名無しさん
07/10/07 00:10:25
>>198
すいません、置換じゃなくて分割でした orz
200:デフォルトの名無しさん
07/10/07 01:56:00
>>196
まず、[あば,ばばば] を うんこっこー に痴漢する
(うんこっこー に痴漢した文字列は堆肥しておく)
うんこっこー, あばばばば, あば, うんこっこー
となるので、これを分割する。そのあと、
うんこっこー を堆肥しておいた文字列に戻す。
201:デフォルトの名無しさん
07/10/07 04:37:56
逆に、 "," をうんこっこーに置換しても良いかもね。
Perl ですまんけどこんな感じで。
$str =~ s/(\[[^]]+\]|[^,]+)(?:(,\s*)|$)/\1うんこっこー/g;
$ary = split(/うんこっこー/, $str);
202:デフォルトの名無しさん
07/10/07 12:19:13
Perl 5.8.8を使っています。
文字列の先頭からある文字列(たとえばXYZ)の直前までを削除する、
ただしその文字列XYZがこない場合はすべてを削除する正規表現は
どう記述したらよいでしょうか。
たとえば
(1) abcXYdefXYZ123 なら abcXYdef のみを削除する
(2) abcXYdef なら abcXYdef すべてを削除する
ということです。
s/^.*(XYZ)?/$1/; とすると(1),(2)ともすべてが削除されてしまい、
s/^.*?(XYZ)?/$1/; とすると(1),(2)とも1文字も削除されません。
s/^.*?XYZ// || s/^.*//;
とすれば(1),(2)ともうまくいきますが、
できれば1個の正規表現で実現させたいです。
203:デフォルトの名無しさん
07/10/07 13:02:54
s/^abcXYdef//;
204:デフォルトの名無しさん
07/10/07 13:19:38
ちゃんと動くんなら、自分の能力で到達可能な範囲のプログラムで十分だと思うよw
s/^((?!XYZ).)*//
205:デフォルトの名無しさん
07/10/07 13:27:33
s/(^.*?XYZ|^.*)//;
206:デフォルトの名無しさん
07/10/07 13:30:59
s/^.*?XYZ|^.*//;
207:デフォルトの名無しさん
07/10/07 13:32:25
> s/^.*?XYZ// || s/^.*//;
> とすれば(1),(2)ともうまくいきますが、
ウソつけ!
208:202
07/10/07 15:49:43
短時間にたくさんのレスが!ありがとうございます。
>>204
(?!pattern) が使えるんじゃないかと思って
質問前にPerlのマニュアルを読んだんですがうまくいきませんでした。
なるほど、こうすればうまくいくんですね。
>>207
s/^.*?XYZ/XYZ/ || s/^.*//; の間違いでした。失礼しました。
>>205-206
ということで、元の質問が間違ってたので間違いです。
試行錯誤の末、 s/^(.*(?=XYZ)|.*)//; という別解を見つけました。
209:デフォルトの名無しさん
07/10/07 20:10:50
PHP5のpreg_matchで、
涼子、愛、美姫以外の文字列が来た場合を検知したいんですが。
涼子、愛、美姫のどれかを検知する場合、
pattern = '/涼子|愛|美姫/';
ですが、涼子、愛、美姫以外を検知するにはどう書いたらいいですか?
210:デフォルトの名無しさん
07/10/07 20:13:06
そのパターンにマッチしないことを確認すればよい。
211:209
07/10/07 20:21:07
>>210
すみません。
涼子、愛、美姫以外を含む文字列です。
たとえば、涼子愛子美紀が来たばあい、
「子」が紛れ込んでることを検知したいのですが。
212:209
07/10/07 20:36:57
>>211
'/^涼子|^愛|^美姫/';
213:209
07/10/07 20:38:53
>>212
すみません。途中でした。
'/^涼子|^愛|^美姫/';
だと涼子、愛、美紀も全部ひっかかってしまいます。
それだけを含んで、それ以外の文字列を全然含まないようにしたいのですが。
214:デフォルトの名無しさん
07/10/07 20:55:01
同じくphp5のpreg_matchですが、
半角または全角の数字から始まるはどう書きますか?
215:デフォルトの名無しさん
07/10/07 21:39:55
>>213
/^(?:涼子|愛|美姫)*$/ とか?
216:デフォルトの名無しさん
07/10/07 21:40:46
>>214
/^(?:\d|1|2|3|4|5|6|7|8|9|0)/ とか?
217:デフォルトの名無しさん
07/10/08 00:15:19
$string = '涼子愛子美紀';
$result = preg_replace( '/涼子|愛|美姫/', '', $string);
echo 'おまんこ';
218:デフォルトの名無しさん
07/10/08 13:51:27
>>215-216
ありがとうございました。
>>217
氏ね!
219:デフォルトの名無しさん
07/10/08 17:38:51
NFAを機械的にDFAに変換する方法を教えてください。
220:デフォルトの名無しさん
07/10/08 20:14:07
そんなもん無い!
って答えでFA?
221:ヽ・´∀`・,,)っ━━━━━━┓
07/10/19 03:35:03
Aho-Corasick改とかでいいと思うが。
222:デフォルトの名無しさん
07/10/25 17:50:49
phpなんですが、URLリンク(*.example.*)にマッチさせたいと思ってます。
2つめの*の部分で、comやjp等にマッチさせたいのですが、
http:\/\/(.+\.)?example\..+/では、
URLリンク(www.example.hoge.com)なんかもマッチしてしまいます。
http:\/\/(+\.)?example\.(com|jp)/とかにすると、
新しいドメインがでてきたときに対応できません。
何かよい方法ありませんでしょうか?
223:デフォルトの名無しさん
07/10/25 18:33:14
>>222
「新しいドメイン」ってのはどんなところまでを想定してる?
224:デフォルトの名無しさん
07/10/25 18:49:54
簡易なのでよければ \..+ じゃなくて \.[^/.]+ にするとか
225:デフォルトの名無しさん
07/10/25 19:51:52
http:\/\/(+\.)?example\.[^.]+\/
226:デフォルトの名無しさん
07/10/27 16:43:32
/\/\/\/\/\//\/\/\/\/\/\/\FUCKINTOSH?_*+*}+}`+`%$W`}!LT`LA<VR`AKVAREGERGA"#%IW$%U&'I<{)'(<O'T(*O>
最近、こうして何の作意もなく打ったものが正則表現に見えてどうしようもない
227:デフォルトの名無しさん
07/11/08 00:14:41
最初と最後は"/"であり、
その間に"/../"や"/./"が発生しない文字列を
正規表現では記述できますか?
[×]
/etc/../usr/./local/
/../
/./
[○]
/etc/sysconfig/
/abc/.aaaa/
228:デフォルトの名無しさん
07/11/08 05:41:48
>>227
正規表現で一気に行うんじゃなくて、
"/" で分割して、各パーツがドットだけで構成されていたらハネる、とか
(ディレクトリトラバーサル対策ならよく調べたほうがいいかも)
229:デフォルトの名無しさん
07/11/08 08:45:57
ありがとうございます。
xmlのxsd:patternで書きたかったのですが、だめそうです。考え直してみます。
230:デフォルトの名無しさん
07/11/08 13:40:57
>>227
これでどうかな。
^/(([^/.][^/]*|\.[^/.][^/]*|\.\.[^/]+)/)*$
汚染チェックに使うなら>>228の言うようにした方がいいな。
231:デフォルトの名無しさん
07/11/11 17:33:05
webでの絵文字表示に苦戦しているのですが、
BAD+[SJISコード]を正規表現で表すにはどう書いたらいいですか?
232:デフォルトの名無しさん
07/11/11 17:34:32
書き忘れていました。言語はPHPで、バージョンは4.4.1です。
233:デフォルトの名無しさん
07/11/11 23:06:58
ぐ・ぐ・れ
234:デフォルトの名無しさん
07/11/11 23:47:19
うん、ググれば全て解決するからこのスレ潰すべきだね。
235:デフォルトの名無しさん
07/11/11 23:52:31
aho
236:デフォルトの名無しさん
07/11/12 00:15:22
ワロタwwwwwww
237:デフォルトの名無しさん
07/11/12 01:18:32
いや、ググって該当するページを見たんですけど、正規表現の構成の仕方がわからなくて、
ここに書き込みました。
調べるだけ調べたんですけど、やはりだめでしょうか
238:デフォルトの名無しさん
07/11/12 01:42:05
だめです
239:デフォルトの名無しさん
07/11/12 04:32:21
なんだこいつら 本当はできないんじゃねーの?
240:デフォルトの名無しさん
07/11/12 09:32:04
>>239
お、やっと気づいたようだね。それじゃあバイバーイ!
241:デフォルトの名無しさん
07/11/12 19:50:58
質問です。正規表現でconsumeするというのは日本語でいうとどういうことですか?
242:デフォルトの名無しさん
07/11/12 19:59:53
文字を消費するということ。
243:241
07/11/12 21:10:47
>>242
ありがとうございます。「文字を消費する」とはどういうことでしょうか?
イメージが湧きません。
244:デフォルトの名無しさん
07/11/12 22:24:56
正規表現 /..c/ を "abc" にマッチさせたときを考えると、
最初の /./ は "a" にマッチして消費する。
すると、なんと言うかテキストエディタのカーソルが一つ進むのをイメージしてくれたらよいか、
二個目の /./ が "b" にマッチできるようになる。
245:デフォルトの名無しさん
07/11/12 22:30:07
テキストエディタの ed ってのが元になってるからね。
カーソルって例えはナイス!
246:241
07/11/12 23:16:33
>>244
なるほど、よくわかりました。ありがとうございます。
247:デフォルトの名無しさん
07/11/15 07:57:08
おはようございます。このスレの過去ログってネットにありますか?
248:デフォルトの名無しさん
07/11/15 16:55:18
あります。
249:デフォルトの名無しさん
07/11/15 20:14:33
アキュムレータの0ビット目って左端?それとも右端?
250:デフォルトの名無しさん
07/11/16 00:58:31
>>249
スレ違い。
251:デフォルトの名無しさん
07/11/16 23:29:30
>>249
左
252:デフォルトの名無しさん
07/11/17 01:06:19
perl互換のFlexible Renamerで置換したいのですが。
(hoge)hoge(hoge).txtを(hoge) hoge(hoge).txtとしたい場合はどう書けばいいのでしょうか。
)の直後にスペースを入れ、拡張子前の)の直後には入れたくないんです。
253:デフォルトの名無しさん
07/11/17 01:30:29
")" -> ") "
" ." -> "."
254:デフォルトの名無しさん
07/11/17 01:34:08
>>253
なるほど。2回やるという手が・・・。ありがとうございました。
255:デフォルトの名無しさん
07/11/17 09:27:48
リネーマの仕様によるけど、Perl互換なら
"^(\([^)]*\))" -> "$1 "
"^(\([^)]*\))(.*)" -> "$1 $2"
とか。いずれにしても調整が必要
256:デフォルトの名無しさん
07/11/18 19:15:56
vb.netで
「// xxxxx EXEC 〜」で始まり、
「// xxxxx EXEC 〜」で始まる1行前までを
1グループで取得したいと考えています
(?ims:(^\/\/+\s+EXEC+.+))
だとまるまる取得してしまうのはわかるのですが、
これを上記の様に取得するにはどう書けばよいのでしょうか?
ご教授よろしくお願いいたします。
257:デフォルトの名無しさん
07/11/18 20:18:03
split
258:デフォルトの名無しさん
07/11/19 02:39:09
>>256
なんでスラッシュをエスケープしてんだよw
.NET の正規表現なら可変長の戻り読みが使えたと思うから、
その始まりのしるしと終端のしるしを戻り読みの部分と先読みの部分に置けば?
.NETで可変長の戻り読みができなかったらすまんw
259:デフォルトの名無しさん
07/11/22 22:35:09
数値比較をしたいのですが、0x021a4 っていくつなのでしょうか?
260:デフォルトの名無しさん
07/11/22 23:13:20
2 * 16^3 + 1 * 16^2 + 10 * 16^1 + 4 * 16^0
261:デフォルトの名無しさん
07/11/22 23:17:32
>>259
電卓開く
↓
関数電卓モードにする
↓
16進モードにする
↓
21a4と打つ
↓
10進モードにする
正規表現の話じゃねーし
262:デフォルトの名無しさん
07/11/23 01:54:14
URLリンク(www.google.co.jp)
263:デフォルトの名無しさん
07/11/23 01:58:02
URLリンク(www.google.co.jp)
これでおk
264:デフォルトの名無しさん
07/11/23 02:44:38
16進数知らないプログラマがいるのか・・・時代は変わったな。
265:デフォルトの名無しさん
07/11/23 02:46:28
プログラマじゃないから
266:デフォルトの名無しさん
07/11/23 08:04:03
具体的には秀丸エディタで置換を行いたいのですが、こうするには…
--------------
[12:34:56] 発言者1:
文章2
文章3
[12:34:56] 発言者2:
文章4
↓
[12:34:56] 発言者1:
文章2
文章3
[12:34:56] 発言者2:
文章4
--------------
どうしたら良いのでしょうか?(文章の中に [ ] が含まれる可能性は無いものとして単純に)
\n[ と記述すると、正規表現の括弧の対応が合ってないとか怒られてしまいます。
非常に初心者な質問ですいません。
267:デフォルトの名無しさん
07/11/23 09:26:00
エスケープ
268:デフォルトの名無しさん
07/11/23 11:43:08
regexre
FrameworkFrame
などといったような「同じ文字列とそれに挟まれた別な文字列」を取り出したいのですが、
どういう文を書いたら実現できますか?
PHPのpreg_replaceで使用します。
よろしくお願いします。
269:デフォルトの名無しさん
07/11/23 12:00:17
re(.*)re でいけると思うけど。
以下はJScriptだけどこれくらいなら読み取れるよね?
var keyword = "re";
var pattern = keyword + "(.*)" + keyword;
var objReg = new RegExp(pattern);
"regexre".match(pattern);
WScript.StdOut.WriteLine(RegExp.$1);
"rere".match(pattern);
WScript.StdOut.WriteLine(RegExp.$1);
"regexregex".match(pattern);
WScript.StdOut.WriteLine(RegExp.$1);
270:デフォルトの名無しさん
07/11/23 12:50:33
Ruby なら (.+)(.+)\1 で $2 を取ればいけるけど、
PHP でいけるかどうかは知らん
271:デフォルトの名無しさん
07/11/23 12:53:54
>>269
日本語読解力に大きく欠けますな
272:デフォルトの名無しさん
07/11/23 13:00:21
eregexreならrが取れるはずだからつかいものになるのか?
273:デフォルトの名無しさん
07/11/23 13:05:34
eregexre なら regexr が取れる。
最長一致だから。
これが目的の物かはともかくとして。
274:デフォルトの名無しさん
07/11/23 13:51:50
>>269
すみません、説明不足でした。
同じ文字列というのも未知なのです。
>>270.
ありがとうございます。
Rubyならいける、というのは期待が持てました。
早速調べてみます。
>>272-273
ここも説明不足でした。
「同じ文字列とそれに挟まれた別な文字列」の全てを取得したいです。
つまりThisIsThePenという文字列からThisIsTh(とePe)を取得できるようにしたいのです。
275:デフォルトの名無しさん
07/11/23 13:56:24
sIs は要らないの?
276:デフォルトの名無しさん
07/11/23 14:00:51
sIs が必要ないならとりあえず Ruby ではこうなる。
PHP でいk(ry
'ThisIsThePen'.scan(/((.+).+\2)/) { puts($1) }
277:デフォルトの名無しさん
07/11/23 19:31:22
文字列 [全ての文字] を 正規表現 [[]([^\]]+)] で 全ての文字 を取り出すことができますが、 文字列 {全ての文字} で 全ての文字 を取り出す正規表現を教えてください。
278:デフォルトの名無しさん
07/11/23 19:42:51
日本語でおk
279:デフォルトの名無しさん
07/11/23 19:46:56
\{([^\}]+)\}
280:デフォルトの名無しさん
07/11/24 08:40:39
ありがとう。
すごいね
正規表現分かる人尊敬するわ
281:デフォルトの名無しさん
07/11/24 09:46:49
別に大した事じゃない。
すげーとか思って思考停止してるから理解できないだけ。
282:デフォルトの名無しさん
07/11/24 09:48:41
分かりました。
私も頑張って勉強します
283:デフォルトの名無しさん
07/11/24 10:09:17
よし! その意気だ!
284:デフォルトの名無しさん
07/11/24 11:18:23
ホモビデオからお前ら。
285:デフォルトの名無しさん
07/11/25 17:53:21
なんでホモなの?
私は女性です
286:デフォルトの名無しさん
07/11/25 19:20:34
性同一性障害か
287:デフォルトの名無しさん
07/11/25 20:30:25
性器表現
288:デフォルトの名無しさん
07/11/25 20:32:19
モザイクのことか
289:デフォルトの名無しさん
07/11/26 00:01:46
>>285
ホモセクシュアルは同性愛って意味だよ
当然、女性同士でも使う
290:デフォルトの名無しさん
07/11/26 12:46:15
ここにいる奴らは全員例外なくホモ
サピエンス
291:デフォルトの名無しさん
07/11/26 15:19:45
ホモ牛乳という名前にはかなりインパクトがあると思うんだ
292:デフォルトの名無しさん
07/11/26 15:26:00
「ホモゲナイズド牛乳」じゃ長すぎるべ。
293:デフォルトの名無しさん
07/11/26 18:38:03
ホモジニアス・マルチコアを略してホモコア呼べ
294:デフォルトの名無しさん
07/11/27 08:45:29
みんな頭おかしいのですね。
残念です
295:デフォルトの名無しさん
07/11/27 11:39:19
HTMLに含まれる CSSの
class="***" や id="**" , aタグの target="***" を削除したいんですが、観よう見真似でやったのですが
マッチしてくれません。どなたか..
(id|class|target|title|style|name)=[\+\$\;\?\.\W\w%,!#~*/:@&=_-]+?
PC用に吐き出されたデータを、携帯用に変換したくて..
296:デフォルトの名無しさん
07/11/27 11:56:07
target="[^"]*"
297:デフォルトの名無しさん
07/11/29 17:43:52
HTMLのコメントを取得するにはどうしたら良いでしょうか?
<!--[^-->]*-->
で試したのですが[^-->]だと各文字を含まないとなってしまうのでだめでした。
文字列を含まないって表現方法がわかりません。
お手数ですがよろしくお願いします。
298:デフォルトの名無しさん
07/11/29 18:01:50
>>297
貪欲でないマッチ
299:デフォルトの名無しさん
07/11/29 18:35:11
>>297
html パーサ使え
300:297
07/11/29 19:51:50
>>298
ありがとうございます。
貪欲でないマッチでググッた所無事解決しました。
>>299
プログラム内で使いたかったので、
パーサを使うとhtml記述ミスなどがあった場合に面倒なので正規表現を使う事にしました。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5390日前に更新/160 KB
担当:undef