正規表現 part4at TECH
正規表現 part4 - 暇つぶし2ch78:デフォルトの名無しさん
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記述ミスなどがあった場合に面倒なので正規表現を使う事にしました。


301:デフォルトの名無しさん
07/11/29 23:53:17
>>299
アホ

302:デフォルトの名無しさん
07/12/02 03:37:22
bregexp.dllを使って
<th>ほげほげ<br/>ほげほげ</th>
のような<th>で囲まれた内部の<br/>だけ削除したいのですが、
<br/>の数が不定で困ってます。どう書けばよいのでしょう?

303:デフォルトの名無しさん
07/12/02 17:04:43
>>302
html パーサ使え

304:デフォルトの名無しさん
07/12/03 18:49:06
正規表現でand検索したいのですが
どのようにすればいいのですか?
正規表現: Win.*Mac.*Linux.*Sun
上記のようにやると、順番が固定されてしまいます。
どのような順番でもいいので4つ入っていれば
ヒットさせたいのです。


305:デフォルトの名無しさん
07/12/03 19:19:07
>>304
肯定戻り読み

306:デフォルトの名無しさん
07/12/03 21:22:52
(?=.*Win)(?=.*Mac)(?=.*Linux)(?=.*Sun).*

307:デフォルトの名無しさん
07/12/03 23:37:29
NHKのFMの番組の曲の時間表示(全角の数字と '分'と'秒'から成る文字列で
末尾は必ず '秒' )を一気に半角数字と「分⇒m」「秒⇒s」のように一気に置換
する方法がありますか? 全角数字でも '2007年' のような文字列はそのま
まにしたいのです。
【例】
'6分08秒' ⇒ 6m08s


308:デフォルトの名無しさん
07/12/04 00:20:03
tr/時分秒/hms/

309:デフォルトの名無しさん
07/12/04 09:06:00
>全角数字でも '2007年' のような文字列はそのままにしたい

のなら

>【例】
>'6分08秒' ⇒ 6m08s



'6分08秒' ⇒ 6m08s

ならないといけないの?

それとも【例】のようにして欲しいの?


310:デフォルトの名無しさん
07/12/04 21:11:44
正規表現処理系一般の話なら文字変換はダメだなあ

311:デフォルトの名無しさん
07/12/04 21:38:52
tr/時分秒[0-9]/hms[0-9]/


312:デフォルトの名無しさん
07/12/04 21:39:27
trはスレ違いだろ

313:デフォルトの名無しさん
07/12/05 00:33:46
>>309は日本語が読めないのだろうか?


314:デフォルトの名無しさん
07/12/05 18:08:23
>>305-306 できました。ありがとうございます。

315:デフォルトの名無しさん
07/12/05 19:45:45
URL が多数含まれる文章があるとき、その URL にマッチさせる正規表現を知りたいです。
マッチさせるのは “http://~/” の部分で充分でして、それだけなら http:\/\/[^\/]+\/ でイケそうです。
ただ今回やりたいのは、特定のドメイン(というかサーバ)の URL はマッチさせない、ということです。
たとえば URLリンク(www.google.co.jp) にはマッチさせたくない、ということです。
これはどんな書き方になるでしょうか?
Perl な正規表現だと具合いいです。

316:デフォルトの名無しさん
07/12/06 06:31:42
>315

>2

317:デフォルトの名無しさん
07/12/07 07:08:24
フリーでとにかく早いのってどれ?
秀丸のやつ?鬼車?

318:デフォルトの名無しさん
07/12/07 23:18:36
秀丸は速くない。

319:デフォルトの名無しさん
07/12/08 14:11:45
>>317
秀丸のは確かに速い

速いけど、他で出来て秀丸で出来ない表現が多いし
それを無理やり秀丸で表現すると結局遅くなることも多い

320:デフォルトの名無しさん
07/12/08 23:27:27
[0-1]?[0-9]
これで2桁目に0か1が付くか付かないか
という表現になりますか?

321:デフォルトの名無しさん
07/12/08 23:32:07
日本語でおk
それだと、0~9 と 00~19 にマッチ

322:デフォルトの名無しさん
07/12/08 23:38:08
すみませんここで聞いて良い事なのか解らないのですが、よければお教えください。
C/Migemo 1.2 リリース版 for Windowsに付属の辞書を読み込ませhoをmigemo_queryしてみたことろ
([ホ☆★ほ逋捕縫豊B萠萌]|ho|Ho)と、なぜかBが含まれた文字列がかえってきました。
この文字列を利用して検索をすると当たり前ながらBに反応してしまうのです。
そこで質問なのですが、どうしてBが含まれるのでしょうか?
もしかして私の使い方が間違っているのでしょうか?

323:320
07/12/09 00:14:35
>>321
すいません、それが言いたかった
ありがとう

324:デフォルトの名無しさん
07/12/09 00:33:23
>>323
「すみません」だろ
日本から出て行けよ

325:デフォルトの名無しさん
07/12/09 00:50:18
こらこら

326:デフォルトの名無しさん
07/12/09 01:08:50
>>322
完全にスレ違いな気がするが、どこが適切か知らないので一応答えておくと、
ホウ素の元素記号がBだから。他にはsaで酸素のOが引っかかったりするはず。

327:デフォルトの名無しさん
07/12/09 01:41:55
>>326
おおおおおおお!
なるほど…
おかげで謎が解けました
ありがとうございました。

328:デフォルトの名無しさん
07/12/18 00:38:45
ひゃ[あぁ゛]*うまひ[いぃ゛]*

329:デフォルトの名無しさん
07/12/18 01:09:55
ひゃうまひ゛

330:デフォルトの名無しさん
07/12/18 04:59:57
ひゃ゛゛゛゛゛うまひ゛゛゛゛゛゛゛

331:デフォルトの名無しさん
07/12/18 12:24:04
/image/[00-31]_[00-1f].jpg
     ↑00~31↑00~1f(16進数)
正規表現でこのように設定したいのですがうまくいきません。

/image/(00_00、01_01・・・10_0a・・・31_1f)
こういったものを書きたいのですが可能でしょうか?

332:デフォルトの名無しさん
07/12/18 12:29:21
>>331
[] は一文字にしかマッチしないのでー。
正規表現はふつうは数値の範囲は指定できないのでー。

([0-2][0-9a-f]|30|31)_[01][0-9a-f]\.jpg


333:デフォルトの名無しさん
07/12/18 13:19:37
>>331
もしかして、 10進部分と 16進部分を対応させたいと思ってる?
それだと正規表現だけでは簡単に書けないと思う。

334:デフォルトの名無しさん
08/01/05 11:31:41
日本語の話しになってしまいますが、質問させてください。

>検索対象に正規表現が一致した場合

>検索対象が正規表現に一致した場合
どっちが正しいのでしょう?

前者が正しいような気がするのですが、よく判らなくなってきました

335:デフォルトの名無しさん
08/01/05 12:04:31
一致というよりマッチといいましょう。

336:デフォルトの名無しさん
08/01/05 17:24:34
そういえばどっちも言うような気がする。
文脈によるというかどっちを軸に語るかによるんじゃないかな。

337:デフォルトの名無しさん
08/01/05 17:36:47
厳密に言うと受理だろうが、気にしすぎだとも思う

338:デフォルトの名無しさん
08/01/05 21:41:39
プログラムの 「前」 ってどっちですか?

339:デフォルトの名無しさん
08/01/05 21:42:19
つまらんコピペだな

340:デフォルトの名無しさん
08/01/05 21:45:36
じゃね? => ぢゃね?

341:デフォルトの名無しさん
08/01/06 14:50:28
ここのFAQの中の手作業でNFAを作成ってページなんだけど
URLリンク(capslockabcjp.kitunebi.com)
/***/にマッチしないきがするけど。

342:デフォルトの名無しさん
08/01/06 15:05:50
だからなんだよ。

343:デフォルトの名無しさん
08/01/06 15:29:12



344:334
08/01/06 15:59:55
レス有難うございます。やっぱり気にし過ぎですかね。
気にしない事にします。

345:デフォルトの名無しさん
08/01/06 23:17:00
if (ch == '/') st = 1;
else if (ch == '*') st = 4; // 追加
図のほうに
S4->S4 [label="*"];
だね

346:デフォルトの名無しさん
08/01/07 00:05:54
>検索対象(の文字列)が正規表現(で表されたパターン)にマッチした場合
パターンは固定だから、俺はこっちがしっくりくる

347:デフォルトの名無しさん
08/01/10 03:38:22
"one two three four"
"one three two four"
にしたいのです。正規表現でスワップ(位置交換)したいんですが
ググってもあんまりなかったです。

一応、java.util.regex.*; 使ってます。

348:デフォルトの名無しさん
08/01/10 03:41:41
"one two three four five" 
"one four three two five" 
1 2 3 4 5
1 4 3 2 5
でした。

349:デフォルトの名無しさん
08/01/10 16:36:35
Pattern pattern = Pattern.compile("^(.*?)\\s+(.*?)\\s+(.*?)\\s+(.*?)\\s+(.*?)$");
Matcher matcher = pattern.matcher("one two three four five");
String str = matcher.replaceFirst("$1 $4 $3 $2 $5");

とりあえず

350:デフォルトの名無しさん
08/01/10 17:42:18
>>349
おお、ありがとうございます。
java.util.regex.Pattern; のAPI見ても \1 は載っていても、$1 は載ってなかったんですができるんですね。

ところでAPI(java, perl, ruby, js)見ても良く分かり辛いのですが、\n, $n のnはいくつまで参照できるんでしょうか。

nは10進表記みたいですけど、
\0
- 1から9までは dec
\1 ... \9
- dec
\10, \11 ... \21
- oct
\010, \011 ... \025

\0nnn とすれば自動で8進表記
\nnnn とすれば自動で10進表記

参照は \1 <=> $1

API(java)ではこういう感じみたいなんですけど実際はどうなんでしょうか。

351:デフォルトの名無しさん
08/01/10 21:27:54
"\1" じゃなく、"\\1" じゃないのかな。

java コンパイル ⇒ 正規表現コンパイル
つまり2回コンパイルされる事に注意。
ここらへんの理屈がわかってないとツライよ。

352:349
08/01/11 00:55:38
>>350
とりあえず最大数は気にしなくていい、[\$]1000とかでもいけるように見える
Petternクラスでは0始まりは8進数になるけど、Matcherクラスでは10進のまま
PetternのescapeとMatcherのappendReplacementあたりのソースを見るといい
うまくまとめられてないけど、2ch止まるらしいので今のうちに書いとく

353:デフォルトの名無しさん
08/01/11 17:24:33
APIソース見てるんですか!
そこまで頑張らなくてもどこかにあるJavaのフォーラムで質問した方がいいんじゃないですか?


354:デフォルトの名無しさん
08/01/11 17:39:56
質問者よりも回答者の方が問題解決に躍起になってるスレ。

355:デフォルトの名無しさん
08/01/11 20:10:07
sedを使ってC言語のコメントを全て削除するにはどうやればいいんですか?
コメントが1行に収まっているなら簡単なんだけど、複数行にまたがる場合にどうすればいいかわからない

356:デフォルトの名無しさん
08/01/11 20:22:05
>>355
パターンスペースとホールドスペースを駆使すればできなくはないが、お勧めできない。
awkかperl、或いは最近のスクリプト言語を使う方がいい。

357:デフォルトの名無しさん
08/01/12 08:24:05
俺には無理ぽ
---------------------------------------
# decom.sed
/\/\*/ {
:loop
/\*\// { b break }
N
b loop
:break
s/\n/ /g
s/\/\*.*\*\///g
}
---------------------------------------

358:デフォルトの名無しさん
08/01/12 08:30:01
URLリンク(main.rtfiber.com.tw)
ちょろっと探したらすぐ見つかったしorz

359:デフォルトの名無しさん
08/01/12 09:21:03
でも>358だと文字列中の/*にも反応しちゃうんだよね。
本格的に使うのは、ちょっと無理。

360:デフォルトの名無しさん
08/01/12 09:51:59
プリプロセッサ指令をプリプロセスで消されないよう加工
 ↓
プリプロセッサにかける
 ↓
加工したプリプロセッサ指令を元に戻す

361:デフォルトの名無しさん
08/01/14 12:03:15
正規表現のエスケープしなくてもいい記号がわからないので、
とにかく記号という記号はエスケープしていて結構カオスになっているのですが、
エスケープしなくてもいい記号一覧とかどっかにありませんか?
!"#$%&'()-=^~\|@`[{;+:*]},<.>/?_
これが
\!\"\#\$\%\&\'\(\)\-\=\^\~\\\|\@\`\[\{\;\+\:\*\]\}\,\<\.\>\/\?\_
こんな感じに・・・

362:デフォルトの名無しさん
08/01/14 12:22:13
半角スペースって普通に半角スペースをいれるか\x20とかくかどっちがいいんですか?

363:デフォルトの名無しさん
08/01/14 12:23:19
普通に半角スペースを

364:デフォルトの名無しさん
08/01/14 12:40:39
>>363
レスありがとう。
普通に半角スペース使うことにしますね。

365:361
08/01/14 15:43:29
完全かどうかはわかりませんがWikipediaにのってました。
というわけで自己解決しました。

366:デフォルトの名無しさん
08/01/14 18:31:15
>362

\s


367:デフォルトの名無しさん
08/01/14 18:36:27
>>366
秀丸じゃ使えないんだよな

368:デフォルトの名無しさん
08/01/14 18:37:44
>>366
つーか、それホワイトスペース一般じゃないか?

369:デフォルトの名無しさん
08/01/14 18:55:23
ホワイトベースに見えた

370:デフォルトの名無しさん
08/01/14 19:43:17
セイラさんにハァハァしすぎw

371:デフォルトの名無しさん
08/01/14 20:00:29
\s は改行にもマッチすることがあるから
半角スペースの代わりにはならないよ

372:デフォルトの名無しさん
08/01/14 22:22:22
特定の英単語が含まれているかをチェックする正規表現を教えてください。
This is a pen.
に対してhisをチェックした場合に引っかからないのが正しいです。

英単語の定義は[A-Za-z]{3,}とする予定で、単語の間はカンマやハイフン、セミコロンなどもあり。
前後が[^A-Za-z]だけだと行頭行末がダメ。。。


373:デフォルトの名無しさん
08/01/14 22:23:48
>>372
\b

374:デフォルトの名無しさん
08/01/14 22:28:09
非語境界ってやつだな。

375:372
08/01/14 22:28:22
>>373
ありがとう。知らんかった。首吊ってくるわ。。。

376:デフォルトの名無しさん
08/01/14 22:41:54
イ㌔

377:デフォルトの名無しさん
08/01/14 22:44:30
\sはタブにもマッチするな
まあ既に>>368が言ってるけど

378:デフォルトの名無しさん
08/01/17 16:41:25
こんにちは。質問です。

@book{sagan:1954,
author = {Fran\c{c}ois Sagan},
title = {Bonjour Tristesse}
}

こんな感じの文字列(BibTeX)を取り込んでハッシュにするためには
どのような正規表現を用いればよいでしょうか。

ポイントは
 1. コンマで分割する。
 2. {}の中のコンマは無視する。
というあたりだと思うのですが、特に括弧の入れ子をどう処理するかで困っています。

使用言語はRubyです。よろしくお願いします。

379:デフォルトの名無しさん
08/01/17 19:22:45
正規表現は再帰をあつかえない。即ち括弧の対応を確かめることが出来ない。
上限をハードコードするなら可能ではあるが、普通にパーサを書いたほうがいいと思う。

380:デフォルトの名無しさん
08/01/17 21:31:48
新しいPerlへようこそ

381:デフォルトの名無しさん
08/01/18 13:21:50
>>380
新しい Perl でも、正規表現 *だけ* では無理じゃね?

382:デフォルトの名無しさん
08/01/18 19:34:46
ソースコードやXMLはネスト構造を持つから正規表現は向かないよな。
Javaとかもソースコードパーサー用の汎用クラスがあるけど、何故か使われなかったり。
BNF法の知識がデベロッパレベルで浸透してないから、無理も無いけど。

383:デフォルトの名無しさん
08/01/24 09:57:54
仕用言語はPHP5.2.4です。UTF-8での運用をしております。
テキストの中のURLをリンクしたいのですが、

$pat = "(https?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)";
$rep = "<a href=\"\\1\" target=\"_blank\">\\1</a>";
$body = ereg_replace($pat, $rep ,$body);

これだと、2ちゃんねるみたく、ttp:から始まったURLの場合リンクできません。
無駄だと思いつつも書き方がわからないので、下記の処理を付け加えましたが、
 <a href="hoge">hoge</a>
↑この部分が何故か文字化けしてしまいます。

$pat2 = "[^h](ttps?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)";
$rep2 = "<a href=\"h\\1\" target=\"_blank\">\\1</a>";
$body = ereg_replace($pat2, $rep2 ,$body);

スマートに書く方法を教えてください。

384:デフォルトの名無しさん
08/01/24 10:34:25
すまない
ageさして下さい

385:デフォルトの名無しさん
08/01/24 10:51:13
>>383
[^h] じゃなくて h? じゃない?

386:デフォルトの名無しさん
08/01/24 11:20:57
>>385
㌧です
ご指摘のように

$pat2 = "h?(ttps?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)";
$rep2 = "<a href=\"h\\1\" target=\"_blank\">\\1</a>";
$body = ereg_replace($pat2, $rep2 ,$body);

こうすることで動きました
ありがとうございました

387:デフォルトの名無しさん
08/01/24 14:34:41
h?っていらなくない?

388:デフォルトの名無しさん
08/01/24 14:46:58
http: ってちゃんと書いたときに h が増殖しちゃわない?

389:388
08/01/24 14:51:28
スマソ、勘違い。

h? を省くと、 http: ってちゃんと書いたときに、こんなふうに h が出てきちゃう。
h<a href="URLリンク(hoge)<)</a>

390:デフォルトの名無しさん
08/01/24 21:19:55
全体を括弧でくくってそれをテキストに指定、
内側のh?(~~をリンクに指定すればいいと思う。

391:デフォルトの名無しさん
08/01/24 21:49:52
$test = '<a href="URLリンク(localhost)">LINK29</a>';
$test = preg_replace('{<[Aa] .+?>LINK([1-9][\\d\\-]*)</[Aa]>}' ,page_href('$1') ,$text);

上記の正規表現で得た29という数字をpage_hrefという関数に渡したいです。
29という数字は取れているみたいですが、関数内には29という数字が渡ってきておりません。
preg_replace内でどうすれば関数に数字を渡せますか?

ちなみにPHP5系です。

392:デフォルトの名無しさん
08/01/24 21:52:25
preg_replace内の$textは$testです
すみませんでした

393:デフォルトの名無しさん
08/01/24 23:30:33
>>390
kwsk

394:デフォルトの名無しさん
08/01/24 23:58:17
>>393
$pat2 = "(h?(ttps?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+))";
$rep2 = "<a href=\"h\\2\" target=\"_blank\">\\1</a>";
$body = ereg_replace($pat2, $rep2 ,$body);

↑こういうことじゃね?

395:デフォルトの名無しさん
08/01/25 00:14:49
>>391
そのくらいの正規表現ならPHP使いなら大抵知ってるからPHPスレでいいと思うよ

で、関数に引数を渡すにはその引数を評価してからじゃないと渡せない
というわけでまずは preg_replace() の引数である page_href('$1') を評価する
でもこの時点で preg_replace() は評価されてないので $1 は未定義

preg_match() を使って二つに分けて書くのが普通だろうけど
どうしても preg_replace() ひとつで済ませたい場合は e 修飾子を使ってこう書く

$test = '<a href="URLリンク(localhost)">LINK29</a>';
print preg_replace('{<[Aa] .+?>LINK([1-9][\\d\\-]*)</[Aa]>}e', 'page_href($1)', $test);

ただこういう謎コード書いて冷たい目で見られても知らない

396:デフォルトの名無しさん
08/01/27 10:16:29
BREGEXPのC言語のラッパーライブラリがあったら教えてください。
BREGEXPでなくても他に使いやすいライブラリがあれば教えてください。

397:デフォルトの名無しさん
08/01/27 11:14:06
C 言語なら PCRE とか鬼車で良いのではないかと。

398:デフォルトの名無しさん
08/01/27 12:52:37
>>396
元々Cだしなぁ。ラッパーに何を期待してる?

それはそれとして、素のBREGEXPは古いのでやめておいた方がいい。
いくつかバグも見つかっているようだし。せめてbregonigにすべきかと。

399:デフォルトの名無しさん
08/01/27 12:55:52
RE *re = ReCompile("/(\d+)/");
if(ReMatch(re, s)) { printf("%s", re->d1); }
ReFree(re);

これくらい簡単なのは確かに欲しい。

400:デフォルトの名無しさん
08/01/27 18:22:16
みんながCのアプリをC++でコンパイル通してくれればfreeもなしで
if (/([0-9]+)/ == str) ...
こうできるけどね。

クラス定義とかしなくていいからさぁ、
C++のランタイムにしてくればモジュール提供する側がラクなんだよなぁ

401:デフォルトの名無しさん
08/01/27 19:22:38
世の中の全てプログラム言語はC++でいいと?

402:デフォルトの名無しさん
08/01/27 19:37:07
C99

403:デフォルトの名無しさん
08/01/29 14:08:08
a b c
aa bb cc
aaa bbb ccc

これのインデントあわせって正規表現だけでできますか?perlです。

404:デフォルトの名無しさん
08/01/29 14:41:11
<A HREF="URLリンク(hogehoge.jp)">URLリンク(hogehoge.jp)
<A HREF="URLリンク(hogehoge.jp)">URLリンク(hogehoge.jp)
…以下続く

という文字列があるのですが、**************の部分に暗号化された文字(例:=7%be%8e%e4)が50文字くらい並んでいて
毎回文字数や形式が変動してしまいます。

<A HREF=" のほうはいいのですが、 HTML上に表示される文字のほうも暗号文字になってしまうので困っています。

正規表現で、HTML上に表示される文字のほうだけ、「リンク」という文字に変える方法はありますでしょうか?

405:デフォルトの名無しさん
08/01/29 15:32:43
>>403
右寄せ?左寄せ?
まあ無理なんじゃない
>>404
pack形式と実行環境書け

406:405
08/01/29 15:42:18
>>404の例は「美人」だと思われるが、それでいいのか?
あとhogehogeやめれexampleにしろ

407:デフォルトの名無しさん
08/01/29 15:55:11
>>404です

実はプログラミングを知らないので、実行環境はテキストです…
秀丸でできればおkです…

408:デフォルトの名無しさん
08/01/29 19:56:06
>>403
正規表現では無理だろう。

幅固定なら awk が楽だが、
最長のに合わせるんだったら perl で普通に
ガシガシ書いてきゃいいんじゃね?

409:デフォルトの名無しさん
08/01/30 00:44:52
perlでweb製作しています。

$txt の中の

href="URL" の中のURLを
http:example.net/test.cgi?url=エンコードしたURL
の形に一括変換したいです。

たとえば
href="URLリンク(search.com)"
href="http:example.net/test.cgi?url=http%3A%2F%2Fsearch.com%2Fstr.cgi?%2Fsearch%3Ffirst%3D1%26p%3D%25BA%25C7%25B9%25E2"
のようにしたいです。

$txt内には複数のhref=""があり、href=""外にもURLがあり、その部分は変換不要です。


$cgi = "http:example.net/test.cgi?url=";
$txt =~ s/(href\=\")([\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\$]*\")/$1&cgi$2/g;

$2の部分をエンコードすればよさげなのでエンコード法を調べてみましたが↓を↑に組み込み方がわかりません。
どなたか、お教えください。
$str =~ s/([^\w ])/'%' . unpack('H2', $1)/eg;



410:デフォルトの名無しさん
08/01/30 01:18:38
use strict;

my $txt = <<TXT;
href="URLリンク(search.com)"
href="URLリンク(search.com)"
TXT

$txt =~ s{(?<=href=").*?(?=")} {
no locale;
sprintf q{http:example.net/test.cgi?url=%s},
do{$_ = $&; s/([^\w ])/'%' . unpack('H2', $1)/eg; tr/ /+/; $_}
}eg;

print $txt;

411:デフォルトの名無しさん
08/01/30 01:26:23
>>410
THANKS

なんか、できそうですが、PERL事態初心者で構文自体は理解できませんorz

412:デフォルトの名無しさん
08/01/30 11:34:55
echoが含まれない行の検索って、java正規表現でできますか?

^.(?<!echo)*$ ではできませんでした。

413:デフォルトの名無しさん
08/01/30 11:45:01
>>412
すいません。できました。
下の2つともできたのですが、「.」のおく位置で何か違いはあるのでしょうか?

^(.(?!echo))*$
^((?!echo).)*$

414:デフォルトの名無しさん
08/01/30 13:56:44
それ上手く動かないだろ

415:デフォルトの名無しさん
08/01/31 01:40:06
ふつうは^(?!.*echo)
これでだめなら ^(?!.*echo).*でもいい

>>413
1つ目はダメ。たとえば次のような行:
echo
このeを.で評価したとき、継続の文字はcho。
echoという文字が続いているわけじゃないから、マッチは成功してしまう。
2つ目はうまくいくだろう。

416:デフォルトの名無しさん
08/02/01 00:31:08
質問です、PHPにおいてファイルパスの正規化をしています。

// テスト文字列、"/test/oame/doe/0"にしたい。
$location = "/test/./oame//doe/abc/../0/";
// 置き換え部分
$location = ereg_replace("//+","/",$location); /* "//" -> "/" */
$location = ereg_replace("/\./","/",$location); /* "/./" -> "/" */
$location = ereg_replace("/.+?/\.\./","/",$location); /* "/___/../" -> "/" */
$location = ereg_replace("/$","",$location); /* 末尾の"/"を削除 */

ereg_replace3番目の、/../の処理がうまくできていません、
$locationが空になります。これはどのように記述したらいいのでしょうか?

417:デフォルトの名無しさん
08/02/01 00:51:28
$location="/test/./oame//doe/abc/../0/";
$x=$location.split('/');
$location='/'+$x[1]+'/'+$x[3]+'/'+$x[5]+'/'+$x[6]+'/'+$x[8];



418:デフォルトの名無しさん
08/02/01 01:15:56
phpよく知らんけどこんなとか?

$location = ereg_replace("/[^/]+?/\.\./","/",$location); /* "/___/../" -> "/" */

419:416
08/02/01 02:04:34
どうもPHP固有の仕様に関することかもしれないので、
そっちで聞いてみたいと思います。
どうもありがとうございました。

420:デフォルトの名無しさん
08/02/01 13:56:31
.(?!xx)* は.*中に「xx」がない、との解釈になるのでしょうか?


よって下記とは異なる、でよろしいでしょうか。
(?!xx).*

421:デフォルトの名無しさん
08/02/06 19:08:06
正規表現で遊べないかと考えていたんけど、みさくら語を正規表現で表すとしたらどうやる?

422:デフォルトの名無しさん
08/02/06 19:56:32
ぐぐったら出てくるじゃないか
URLリンク(home.1555.info)

とりあえず上のJavaScriptの意味を調べてみては
その過程で正規表現より他に必要なものが見つかるはず

423:デフォルトの名無しさん
08/02/07 09:29:34
マッチさせた後どう処理するかの方が肝なので、正規表現だけ考えても仕方ないかと。

424:デフォルトの名無しさん
08/02/07 21:45:00
蒲焼《か はやき》
深川《ふか がわ》
↑のような《》に挟まれた半角スペース、全角スペースを指定する正規表現はどう書けばいいか教えて下さい。よろしくお願いします。

425:デフォルトの名無しさん
08/02/08 03:36:32
>>424
>>1

426:デフォルトの名無しさん
08/02/08 17:50:02
********aaa aa *
****age p * kk **
*aaaa
のようなものの*を行頭から連続している部分だけ-に換えたいんですが
--------aaa aa *
----age p * kk **
-aaaa
こういうような二重絞り込みみたいなものってperlのワンライナーでやる方法が知りたいです
perl -pe '/^[\*]*/ & tr/*/-/'
みたいな感じで条件を合成できそうな気がするんですが

427:デフォルトの名無しさん
08/02/08 18:02:31
perl -pe 's/^\**/q{-} x length($&)/e'

428:デフォルトの名無しさん
08/02/08 18:46:33
どうもありがとうございました
正規表現だけじゃできないんですね
perlも勉強することにします

429:424
08/02/08 19:34:16
ソフトは秀丸使ってます。実装言語とかよくわかりません。

430:デフォルトの名無しさん
08/02/08 19:58:15
テンプレのサイトで少しは勉強してきなよ

431:デフォルトの名無しさん
08/02/08 20:10:24
やってみって《》とその中までは指定できたけどその先がよくわからんのです。

432:デフォルトの名無しさん
08/02/08 20:27:02
[《 》]
↑だと《》も一緒に指定してしまうし、だめだ。

433:デフォルトの名無しさん
08/02/09 01:36:18
あきらめてこれで検索したら?
\f《[^《]*\f \f[^》]*》\f
置換するなら"\1置換後文字\3"とかで指定すればいいんだし。

434:デフォルトの名無しさん
08/02/12 01:09:08
phpなんですが、たとえば
$a = "aiueo";
$b = "aiu";
と、あるときに
変数$bの中身(aiu)が$aに含まれるかを調べたいんですがどうしたらいいでしょうか。

435:デフォルトの名無しさん
08/02/12 01:17:22
strstr

436:434
08/02/12 11:16:40
わかりました!ちょっと難しく考えすぎていたようです。
正規表現使う必要ないんですね。
ありがとうございます。

437:デフォルトの名無しさん
08/02/13 00:28:11
・・・これだ

438:デフォルトの名無しさん
08/02/13 15:18:34
phpです。
htmlファイル中の
<p>
test
あああ
いいい
ううう
</p>
を preg_match('/<p>((.|\n)+)<\/p>/', $source, $test); でマッチさせると
$test[0]には全体、[1]には一致した部分が入っていて正しいのですが
[2]に空白も入ってしまっているようです。
Array
(
[0] => <p>
test
あああ
いいい
ううう
</p>
[1] =>
test
あああ
いいい
ううう

[2] =>

)
このようになります。
上手く間にある文字列だけをマッチさせる方法はないでしょうか。

439:デフォルトの名無しさん
08/02/13 15:26:34
>>438
二個目のカッコ (.|\n) にマッチした箇所がキャプチャされてるね。
後方参照されないように (?:.|\n) とか。 ?: の意味は自分で調べて。

440:デフォルトの名無しさん
08/02/13 15:34:54
素早いレスありがとうございます。調べてみます。

441:デフォルトの名無しさん
08/02/15 18:54:31
Perl5.6でIPアドレスの範囲と場所をマッチングさせたいと思っています。

192.168.1.* を東京
172.16.0.* ~ 172.16.3.* を大阪

という場合はどのように判定させればいいのでしょうか。
Perl歴3日目なもんで・・・どなたかお力を。

442:デフォルトの名無しさん
08/02/15 19:00:38
とりあえず、正規表現でやろうとするのは間違ってますよ。
split /\./ してからごにょごにょするか、
CPANのNetAddr::IPのようなモジュールが使えないか検討してください。

443:デフォルトの名無しさん
08/02/15 19:04:12
なるほど。分けてから比較するんですね。
方向性が分かっただけでも助かりました。
ありがとうございました。

444:デフォルトの名無しさん
08/02/15 20:05:50
そういう場合はサブネットマスク使ったほうが綺麗にかけるぞ

445:デフォルトの名無しさん
08/02/15 22:54:30
255.255.252.0とかで切っててもいけるもんなんですか?

446:デフォルトの名無しさん
08/02/16 13:40:36
bitでかんがえてみろ

447:デフォルトの名無しさん
08/02/19 10:54:06
テキストエディタで検索・置換をするのに
特定のワードで始まる行末7文字の指定はどう書けばいいでしょうか?

それとDOSのワイルドカードだと
AA○○.txt
AA××.txt
とあったときren AA*.txt BB*.txtとすれば
BB○○.txt
BB××.txt
となったと思うのですが、正規表現でも同様な事ができますか?
こちらもテキストエディタでの検索・置換です

448:デフォルトの名無しさん
08/02/19 15:07:30
PHP正規表現チェッカー
URLリンク(www.rider-n.sakura.ne.jp)


449:デフォルトの名無しさん
08/02/19 17:34:36
>特定のワードで始まる行末7文字の指定
これの意味がわからない、例を出せ例を

450:デフォルトの名無しさん
08/02/19 17:36:10
テキストエディタっつってもできることできないこといろいろあるので
具体的なソフト名を出した方が回答が得られやすいと思われ。

451:デフォルトの名無しさん
08/02/19 17:48:38
コミュニケーション能力が不足しているな。
エディタの使い方とか正規表現とか覚える前に
人間として最低限必要な事を先に覚えたほうがいいんじゃない?

452:447
08/02/19 17:55:55
答えられないカスどもは黙っててください
わかる人だけが、質問に答えてくれればいいです
では引き続きよろしくお願いします

453:デフォルトの名無しさん
08/02/19 18:07:23
晩飯なににすっかなー

454:デフォルトの名無しさん
08/02/19 18:37:56
サンマの缶詰が安かったから、これで炊き込みごはん。
米1合を洗ってダイソーで買った105円の土鍋に入れる。
そのままサンマの缶詰1缶まるごとブチ込む。
水加減は、缶詰の水分と合わせて200mlくらいになるように調節。
30分くらい浸して火にかける。
最初は中火より強め。5分くらいで吹いてくるから弱火にして、さらに5分。
(赤子泣いてもフタ取るんじゃないぞ)
炊き上がったら5分むらす。
缶詰はサンマでなくても、鯖とかイカとか赤貝とか、好みのでOK。
味が濃い目の缶詰がいいな。味が薄いときは醤油や砂糖やみりんを加えてから
炊くといいよ。

455:447
08/02/19 18:40:47
エディタはJedit X1.11です

例)
あああ~~~1234567
いいい~~~1234567
………
………

~~~は文字数などもバラバラな任意な文字列(全角含む)

行頭『あああ』で始まる行の、行末『1234567』を
別の文字列『abcd』等に置換したいのです


456:デフォルトの名無しさん
08/02/19 18:43:41
あああ腹へったなー

457:デフォルトの名無しさん
08/02/19 20:02:10
(?<=あああ).*(?=.{7}) -> abcd

458:447
08/02/19 21:51:39
>>452
おいおい気がついたらとんでもない事勝手に書いてるな~(苦笑

>>457
ありがとうございます
戻り読みと先読みですか、なるほど!
ですが、これだと『~~~』の部分になってしまいますよね……

459:デフォルトの名無しさん
08/02/19 23:38:16
1合炊きの土鍋なんてあるのか
今度ダイソーに行ったら見てみよう

460:デフォルトの名無しさん
08/02/19 23:44:48
>>459
中国製の土鍋なんてどんな毒が混ざってるか分からんぞ。

461:デフォルトの名無しさん
08/02/20 00:38:19
ニ○リの土鍋以外にでたっけ

462:デフォルトの名無しさん
08/02/20 08:47:18
>>452
こういうことすぐ言う人って、昔いじめられてた人なんでしょ?可哀想にね

463:デフォルトの名無しさん
08/02/20 11:24:13
めんどくさがりなので俺なら↓でやってしまうな
/^(あああ.*?)(.{7})$/\1abcd/

464:447
08/02/21 18:24:17
>>463
ありがとうございます

いろいろ調べながらやってますがダメなようです
もうちょっとがんばってみます

465:デフォルトの名無しさん
08/02/21 18:30:35
せっかくヒントもらえたんだし、頑張ってもらわんとな

466:デフォルトの名無しさん
08/02/22 00:06:24
>>396
いまラッパーつくってるよ
ちょっとまてて

467:デフォルトの名無しさん
08/02/22 13:22:33
2008-03 発売(予定)
「詳説 正規表現 第3版」 (Jeffrey E.F. Friedl 著 / 長尾高弘 訳)
ISBN 978-4-87311-359-3 定価 5,040円

468:デフォルトの名無しさん
08/02/22 16:48:39
おや、和訳出るのね。今回は田和さんじゃないんだ
もったいない気もするがロングテールの人なら鉄板か

469:466
08/02/22 21:49:08
できましたよ 使ってみてください サポートはここで
URLリンク(fx10.web.fc2.com)

470:デフォルトの名無しさん
08/02/23 03:35:41
>>468
原書では追加はPHP関連とかがあったけど、以前のものからの改訂部分って
ほとんどなかったんだよね。
訳しなおしてるのかなあ?



471:デフォルトの名無しさん
08/02/23 20:12:38
php4なのですが、
<img src="new.gif" alt="New" width="10">
を正規表現で置換してaltの値だけを表示にすることは出来ませんでしょうか

よろしくお願いします

472:デフォルトの名無しさん
08/02/23 20:21:04
<img src=\".*?\" alt=\"(.*?)\".*?>
\1
でできたよ

473:デフォルトの名無しさん
08/03/05 20:28:49
秀丸で検索するときに文字列Aを含んで且つ文字列Bを含まない行全体を指定したいのですが、
(含む行)       ^.*文字列A.*\n
(含まれない行)   ^((?!文字列B).)*\n
で個別にはわかるんですがこの2つを合わせてて検索したいのですがどう書けばいいのでしょうか?

474:デフォルトの名無しさん
08/03/05 23:21:55
(^.*文字列A.*\n|^((?!文字列B).)*\n)

475:デフォルトの名無しさん
08/03/05 23:22:43
あ、間違えたわ

476:デフォルトの名無しさん
08/03/06 01:07:25
  dll
| ^
  dll

477:デフォルトの名無しさん
08/03/07 08:06:30
微妙にイケメソがいるな

478:デフォルトの名無しさん
08/03/07 08:12:32


479:デフォルトの名無しさん
08/03/07 08:35:28
(6
  ’)
(6


480:デフォルトの名無しさん
08/03/07 17:01:30
質問です。
小数点以下の右端の0を全部取り除きたいです。
小数点以下が0しかない場合は、小数点も含めて取り除きたいです。

3.00 → 3
3.02000 → 0.02

どう書けばよいでしょうか?
sprintf("%g", num) とすればいけるかと思いましたが、numが19120730.0000の場合に
1.91207e+07となり、使えませんでした。
perl5.8です。宜しくお願いします。



481:デフォルトの名無しさん
08/03/07 17:04:54
      ____
      // ̄ ̄`|
     /|断 だ |
     / |る が |
    /イ \___|
    / |// /| |
   /_\ /_/_レ|
   ∧o>/ イ≡三\|
  /ミ// r-<彡/|
  / /彡 ヾ\_O> |
 /iハ-イ)   ̄ヽ彡|
`/ i∧二    // |
/ (`ーv\  // /|
`<j`ーヾ_ゝ // (r|
  `<  ノ  /リ|
    `<  //7|
      `</ / |
        `<|


482:デフォルトの名無しさん
08/03/07 18:16:02
正規表現関係ないな。脳みそつかえ

483:デフォルトの名無しさん
08/03/07 20:32:03
>>480
s/\.?0+$//

484:デフォルトの名無しさん
08/03/08 10:40:12
約2万件のデータがあるのですが
使用する文字が半角全角交じりで途中に記号やスペースもあるかもなのです
文字数もわかりません
2つのキーワードで全部取れますか?

キーワード①東京都
キーワード②3-5-7

何区何町だったか思い出せません><
何故か357って数字だけ覚えてました^^

485:デフォルトの名無しさん
08/03/08 10:59:33
東-京/都
とかなってたら終わりだな

486:デフォルトの名無しさん
08/03/08 11:44:11
東京都 市ってなかったっけ?w

487:デフォルトの名無しさん
08/03/08 12:23:42
東京都.*?[33三].+?[55五].+?[99九]
で抽出してあとは手動かなぁ、俺がやるなら
漢数字が入る地名とかいちいちはじいてられないし

488:デフォルトの名無しさん
08/03/08 14:42:33
<object> ←これ検索したいんですお願いします

489:デフォルトの名無しさん
08/03/08 17:32:38
/<object>/

490:デフォルトの名無しさん
08/03/09 01:17:00
>>1
みたいにアンカー機能を付けたいのですがどのように書けば良いのでしょうか?

491:デフォルトの名無しさん
08/03/10 10:41:21
>>490
>>1 を見てその質問の仕方なのかよ!?

492:デフォルトの名無しさん
08/03/10 21:13:30
<hoge aaa="aa\"bb<cc>dd" zzz="ee\"ff<gg>hh">value</hoge>

value

と置換する正規表現を教えて下さい
言語は JavaScript で、戻り読みは使えません

493:デフォルトの名無しさん
08/03/10 21:23:42
正規表現よく分かりません><
<[^/]+>([^<]+)</.+>

494:デフォルトの名無しさん
08/03/11 02:03:14
入門 正規表現

サンプルがJavaで吹いた

495:デフォルトの名無しさん
08/03/11 06:12:35
>492
ブラウザのJavaScriptならXPathのほうが速くて正確

496:デフォルトの名無しさん
08/03/11 06:39:06
>>495
ブラウザじゃないです

取得したページからタグを削除することを目的としています

497:デフォルトの名無しさん
08/03/11 06:41:25
>>495
493の正規表現でいいんじゃね?

498:デフォルトの名無しさん
08/03/11 08:57:13
秀丸ではスペースは直打ちがデフォですか?
何か気持ち悪い。

499:デフォルトの名無しさん
08/03/12 01:26:27
Perlの正規表現で[^\.-z]っていうのがあったんですけどこれってどういう文字が当てはまるんですか?

500:デフォルトの名無しさん
08/03/12 01:36:32
>>499
ASCIIのコード表でも見てみればいいんじゃないかな

501:デフォルトの名無しさん
08/03/12 06:02:36
>>500
見てみたけどピリオドのほうがzより後に来てるのでこれおかしいんじゃないのと思って質問したのですが・・・

502:デフォルトの名無しさん
08/03/12 06:04:10
どこの表にそんなでたらめが書いてあるんだよ

503:499
08/03/12 06:07:45
あ、あれ・・・
もう一回調べてみたらピリオドのほうが先に来てる・・・

504:デフォルトの名無しさん
08/03/12 22:09:17
>>503
あー、すまん、書き間違えてたので修正しといた。

505:デフォルトの名無しさん
08/03/12 22:16:00
ってのは冗談として、
そういう ASCII コード表の順に大きく依存するような範囲指定を書くのは良くないと思う。
バグってハマったときに ASCII コードを凝視しないと解決いけなくなるし、移植性も低くなる。
アルファベットと記号は分けて書くようにするとか、文字クラスなどを利用した方が良い。

506:デフォルトの名無しさん
08/03/12 23:26:03
>>505
言うことは非常によくわかる。
文字クラスを使うべきっていうのには完全に同意。
でもASCIIコード順は移植性十分にある気がする。
とりあえず俺はASCIIコードで範囲指定するのは問題ないと思う。

507:デフォルトの名無しさん
08/03/12 23:49:22
個人的には
OSの事情とかLOCALEまわりのランタイムの完成度とか
POSIX文字クラスは警戒心をくすぐるものだw

508:デフォルトの名無しさん
08/03/13 02:07:43
こんばんは!
はじめましてよろしくです^^

キーワード①とキーワード②を同時にグレッペ出来る機能のあるツールはありますか
1000ファイル単位で処理したいんですが
1ファイルに①②②(②は同じものが連続である)
これを行ごとgrepしたいんです
②については1つ削除がいいです
よろしくお願い致します

キーワード①東京都 キーワード②性別②(性別マーク)

509:デフォルトの名無しさん
08/03/13 02:25:18
日本語でおk

510:デフォルトの名無しさん
08/03/13 03:23:27
3回読んだが意味わからん

511:デフォルトの名無しさん
08/03/13 03:30:34
なんとなくわかった気がしたけど最後の1行でぶちこわされた

512:デフォルトの名無しさん
08/03/13 07:22:30
グレッペ

513:デフォルトの名無しさん
08/03/13 07:40:30
こんばんは迄呼んだ。

514:デフォルトの名無しさん
08/03/13 08:09:40
グレッペのあたりで断念した

515:デフォルトの名無しさん
08/03/13 09:04:25
デフォルトのまで読んだ

516:デフォルトの名無しさん
08/03/13 09:11:02
1ファイルに3つのキーワードが先頭から
 都道府県名
 性別
 性別を表す何らかのマーク
の順番で並んでいて、
2つめと3つめは同じ性別を意味する別表現である。
例えば2つめが「男」だったら、3つめは「♂」となる。
これをgrepしたいが、性別については一つ消したい。

こんな感じか?
grepだけじゃ無理だからsedかawk使え、でおk?

517:デフォルトの名無しさん
08/03/13 09:48:33
わろた

518:デフォルトの名無しさん
08/03/13 12:54:59
縦読みだろJK

こはキ11こ②よキ

ここで、前半部分の"こはキ11こ"というのは、
個数は11個じゃないよ、というのを表している。
個は、!=11個、というわけだな。
後半部分の"②よキ"というのは、
2個でもねーよ、というのを表している。
(2個 !=)という逆ポーランド記法を使っているようだ。

つまり、個数は11個でも2個でもないということだったんだよ!!!
Ω ΩΩ<な、なんだってー!!!

519:デフォルトの名無しさん
08/03/13 16:15:05
Perlで>>1のようにアンカー機能をつけるためには正規表現を学べばいいと聞きました

if ($FORM{'text'} =~/>>$d/)
こんな感じでアンカーを抜き出すのは合ってるのでしょうか?
そのあと$DATA[$d]てきなのを取り出すにはどうしたらいいのでしょうか?

520:デフォルトの名無しさん
08/03/13 16:26:58
>>519
ハェ?誰に聞いたんだ?言った奴に質問してこい

521:デフォルトの名無しさん
08/03/13 20:34:26
$FORM{'text'} =~ s/>>(\d{1,4})/<a href='#$1'>>>$1<\/a>/ixms
思いついたやつを貼ってみる
こんなんだっけ?perlうろ覚えだわ

522:デフォルトの名無しさん
08/03/13 21:25:39
>>521
うまくリンクされません。。
$FORM{'text'} =~ s/>>(\d{1,4})/<a href='#$1'>>>$1<\/a>/ixms
↑これは桁数が1~4ならマッチということですよね
リンクされないのはなぜでしょうか?

523:デフォルトの名無しさん
08/03/13 21:30:52
すいません
自己解決しました
$val =~ s/</</g;
$val =~ s/>/>/g;
これでタグを無効にしていました
それで>>521さんの通りにやるとアンカー自体はマッチします
この後それを取り出すのはどのようにすればいいのでしょうか?
ログからデータを取得するのはわかりますが、実際にその取り出された部分だけを抽出して表示するやり方がいまいちわかりません

524:デフォルトの名無しさん
08/03/13 21:35:50
webprog池

525:デフォルトの名無しさん
08/03/13 21:58:16
>>508
やったな、おい!大漁じゃねーか!

526:デフォルトの名無しさん
08/03/14 07:20:33
なんだい今更になって
本人乙とでも言ってほしいのか?

527:デフォルトの名無しさん
08/03/14 18:46:06
>>523

528:デフォルトの名無しさん
08/03/14 21:06:23
「楽しいかもね、そうかもね」っていう文字列で
「楽.*ね」ってやると、.*は可能な限りマッチするから
「楽しいかもね、そうかもね」まで拾っちゃうでしょ?
それを「楽しいかもね」でマッチさせたい場合どうすればいいですか?

529:デフォルトの名無しさん
08/03/14 21:08:42
*?って?をつければ非欲張り型(なるべく短くマッチ)になるかも知れない

530:デフォルトの名無しさん
08/03/14 21:08:49
>>528
まずは>>1を音読したまえ

531:デフォルトの名無しさん
08/03/14 21:09:35
楽.*?ね

532:デフォルトの名無しさん
08/03/14 21:12:11
.*? でした。

533:デフォルトの名無しさん
08/03/15 00:19:58
60文字程のURLなんだけど
真ん中あたりの15文字くらいがわかんなくなりました
正規表現でなんとかなりませんか?

534:デフォルトの名無しさん
08/03/15 00:27:42
その15文字の前か後ろの長いほうで検索すればいいだろ…

535:デフォルトの名無しさん
08/03/15 10:57:56
>>528
楽[^、]*ね

536:デフォルトの名無しさん
08/03/15 11:05:59
>>535
それが許されるなら
楽しいね
だって許されるはずだ

537:デフォルトの名無しさん
08/03/15 11:47:45
楽しい、ね

538:デフォルトの名無しさん
08/03/15 11:48:14
楽しいかもね楽かもね

539:デフォルトの名無しさん
08/03/15 14:28:52
>>535
だったら
 楽[^ね]*ね
でもいい様な。

540:デフォルトの名無しさん
08/03/15 18:53:11
ワード協会とか除外すればいいのどは

541:デフォルトの名無しさん
08/03/15 22:03:46
安楽死ね

542:デフォルトの名無しさん
08/03/16 00:57:08
「楽しいかもね、そうかもねABC」っていう文字列で
「ね.*$」ってやると
「ね、そうかもねABC」まで拾っちゃうでしょ?
それを最後の「ねABC」でマッチさせたい場合どうすればいいですか?

543:デフォルトの名無しさん
08/03/16 00:59:00
ね.*?$ だと何度言えば

544:デフォルトの名無しさん
08/03/16 01:02:19
>>543
マジで?できないけど??

545:デフォルトの名無しさん
08/03/16 01:04:58
[^ね]を使うとか、いろいろやりようはある

546:デフォルトの名無しさん
08/03/16 01:08:49
>>544
最短一致に対応してないタイプの正規表現なのかな。

547:デフォルトの名無しさん
08/03/16 01:16:55
>>543,546
その目的には、最短一致は使えないから。
照合開始位置を後ろにずらしてまで最短を見つけるわけではない。

548:デフォルトの名無しさん
08/03/16 01:21:20
ああ、そうなんだ。

549:デフォルトの名無しさん
08/03/16 01:34:22
さあ、この問題を解決できる神はいるのだろうかっ!!(ただ答えが欲しいだけ)

550:デフォルトの名無しさん
08/03/16 01:35:49
ね[^ね]*$ じゃないのか?

551:デフォルトの名無しさん
08/03/16 01:50:55
それもう545で提案されてんじゃん。

552:デフォルトの名無しさん
08/03/16 02:24:31
>>550
THX!ひとまずそれで省いた後
ね$をマッチさせることにするよ

553:492
08/03/16 03:14:37
やはり戻り読みが使えないと難しいですか?

554:デフォルトの名無しさん
08/03/16 03:24:12
戻り読みはいらんだろ

555:デフォルトの名無しさん
08/03/16 06:10:58
Vimで
2008年3月16日 06:09:42

2008-03-16 06:09:42
のように年月を-で、日を削除するように置換するにはどうしたらいですかね?

556:デフォルトの名無しさん
08/03/16 06:25:49
:%s/年/-/
:%s/月/-/
:%s/日//

じゃあかんのんか?
というか、3 を 03 に変える所までやりたいの?

557:デフォルトの名無しさん
08/03/16 06:31:06
>>556
説明不足ですみません、対象のテキストには日付以外にもいろいろ書かれていて、
年や月などの単語はそのままに日付部分だけ置換したいのです。
日付の正規表現が理解できていないので、こちらでお尋ねした次第です。

>というか、3 を 03 に変える所までやりたいの?
可能ならしたいです。

558:デフォルトの名無しさん
08/03/16 07:04:36
とりあえずこれでいけた。

:.s/\([0-9]\{1,4}\)年\([0-9]\{1,2}\)月\([0-9]\{1,2}\)日/\=system("printf '%04d-%02d-%02d' " . submatch(1) . " " . submatch(2) . " " . submatch(3))/

559:デフォルトの名無しさん
08/03/16 07:09:55
しまった。
テスト用に1行のみの置換にしてた。
:.s は :%s に変えてね。
まあ分かると思うけど。

560:デフォルトの名無しさん
08/03/16 07:45:51
>>558さん、ありがとうございます。
やってみたのですが、うまくいかず、日付の部分が丸ごと消えてしまうようです。

'printf' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

と出ました。こちらのVimの設定が悪いのでしょうか?もう少し試してまたレス返しにきます。

561:>>555=>>557
08/03/16 08:05:26
何度か試したのですが、同じ結果です。
一応こちらの手順ですが、スレに貼って頂いたものをクリップボードに入れてから、
:<C-R>*
で貼り付けして、先頭を :%s/ に変えてテキスト全体に適用してから、実行しました。ほぼコピペなので打ち間違いはないと思うのですが。
Vim7 を Windows 2000 sp4 で使ってます。
printf などもわからないため、もう少し調べてみます。

562:デフォルトの名無しさん
08/03/16 10:10:00
>>555
ViVi でだけど以下でいけた
:s/(\d{4})年(\d{1,2})月(\d{1,2})日 (\d{2}):(\d{2}):(\d{2})/\1-\2-\3 \4:\5:\6

Vim でも同じように出来るんじゃないか?

563:デフォルトの名無しさん
08/03/16 11:45:32
>>562さん、やってみましたが無理でした。
マッチはうまくいってるみたいですが、置換の仕方がVimとだいぶ違うようです。
ViViはいじったことないので、少し調べてみます、スペース入れる辺りがよくわかりませんので。
わざわざありがとうございました。皆さん、お手数おかけしております。

564:デフォルトの名無しさん
08/03/16 12:03:58
お二人のご教示をヒントにいろいろいじっていたら、以下で、

%s/\([0-9]\{1,4}\)年\([0-9]\{1,2}\)月\([0-9]\{1,2}\)日/\1-\2-\3/g

2008年3月16日 06:09:42

2008-3-16 06:09:42

のように、桁数が1桁のままですが、それ以外は置換できました。もう少し試行錯誤してみます。

565:デフォルトの名無しさん
08/03/16 12:29:58
月などを2桁にしたいのなら、ViViだと以下のようにすればいい

:s/(\d{1,4})年(\d{1,2})月(\d{1,2})日 (\d{1,2}):(\d{1,2}):(\d{1,2})/format("%04d-%02d-%02d %02d:%02d:%02d", $1,$2,$3,$4,$5,$6)/e


566:デフォルトの名無しさん
08/03/16 16:54:21
>>560
>>558 は printf コマンドがあることを前提にしてるから
Windows のコマンドプロンプトだと無理なんだろう。
Cygwin でやればいけるはず。

567:デフォルトの名無しさん
08/03/16 17:51:53
>>565さん、ViViを使って、教えていただいた正規表現でできました。
いろいろVimで粘ったのですが自分のスキルでは無理だったので。
ありがとうございました。

>>566さん、ご教示ありがとうございます。
Cygwinはよくわからないのと、>>565さんの方法で出来たので printfコマンドはあきらめました。

>>555の質問の件は>>565さんので解決することができました。
皆さん、いろいろ教えていただきありがとうございました。お世話になりました。

568:デフォルトの名無しさん
08/03/16 19:50:39
あまりの丁寧なレスに
全米が泣いた

569:デフォルトの名無しさん
08/03/18 14:41:31
初心者です、それなりに調べたんですが・・

あああああああ
aaaaaaaaa
??????????
乙乙乙乙乙乙乙乙乙乙乙乙

こういうある文字の繰り返しを、一つの表現でマッチできますか?たとえば10文字以上
専ブラで弾きたいんですが、数字はのぞけると嬉しいです

570:デフォルトの名無しさん
08/03/18 14:44:54
[^\d]{10,}

571:デフォルトの名無しさん
08/03/18 14:45:26
"正規表現 後方参照"でググれ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch