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


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

正規表現 Part5



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

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

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

267 名前:264 mailto:sage [2008/09/22(月) 18:03:23 ]
自己解決したので、カキコ。

まず、文字列を評価するための宣言をする
Dim myEv As MatchEvaluator = New MatchEvaluator(AddressOf henkan)

んで、置換部分をこんな感じにする。
str = Regex.Replace(str, "<a href="".*?"">", myEv)

さらに、関数をこんな感じに作る。
Public Function henkan(ByVal url As Match) As String
    Dim s As String = url.ToString()
    s = Regex.Replace(s, "\\", "/")
    Return s

End Function

268 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 18:48:58 ]
>>265
mbじゃないなら
$ php -r 'preg_match_all("([a-z])","abcdef",$reg);print_r($reg);'
でできるんだよな。

でもそれはどうでもいいんだよな。

269 名前:デフォルトの名無しさん [2008/09/23(火) 21:44:17 ]
PHPのpreg_matchを使ってHTML文書から次の内容を検索する
正規表現で困っています。

<a href="URL">前のページ</a> <a href="URL">次のページ</a>

ここから「次のページ」を囲んでいるAタグのURLを検索したいです

/<a href=\"(.+?)\">次ページ<\/a>/
これだと、前のページのAタグまで含んでしまい困っています。
最左から検索するのが問題だということまでは分かったのですが解決法が分かりません。

/<a href=\"(.+?)\">(?=次)次ページ<\/a>/
こんな書き方もダメでした。

ヒントでもいいので教えていただけませんか?

270 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 01:53:37 ]
>>269
> href=\"(.+?)\"

href=\"([^"<>]+?)\"
にでもしたらどーでしょ。


271 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 06:47:50 ]
始めての…表現
anond.hatelabo.jp/20080924122353

272 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 19:04:52 ]
いままでMac OS9 Jeditにて正規表現での置換をしていました.
正規表現での一括置換ができる検索置換ラクダv1.01を導入したのですが
表現方法?Perlでの書き方が違うみたいで上手く置換できません.

できればOS9環境で正規表現の連続置換がしたいので検索置換ラクダで可能な
正規表現をPerl初心者の私にどうかアドバイスというか答えを教えてください・・

「全角文字の前後の半角スペースを削除」例= この MPEG は → このMPEGは 
{[、-◯ぁ-んァ-ヶ亜-腕弌-熙]}\s 【タブ】 \1
\s{[、-◯ぁ-んァ-ヶ亜-腕弌-熙]} 【タブ】 \1

「全角文字の前後の半角カンマを全角カンマへ」例= あ,あ → あ,あ
{[、-◯ぁ-んァ-ヶ亜-腕弌-熙]}, 【タブ】 \1,
, {[、-◯ぁ-んァ-ヶ亜-腕弌-熙]} 【タブ】 ,\1

「行末の西暦を括弧で囲む」例= XX, 2005 → XX(2005) XX,1998 → XX(1998)
, {200[1-9]}$ 【タブ】 (\1)
,{200[1-9]}$ 【タブ】 (\1)
, {19[1-9][1-9]}$  【タブ】 (\1)
,{19[1-9][1-9]}$  【タブ】 (\1)

「半角数字間の全角ピリオドをピリオドを半角ピリオドへ」例= 1.1% → 1.1%
{[0-9]}.{[0-9]} 【タブ】 \1.\2

273 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 19:13:47 ]
>>272
全角文字を文字範囲で指定するのは、
文字コードに依存するからうまくいかない環境もあると思う。

274 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 20:05:20 ]
OS9って昔の環境だよな
検索置換ラクダとやらが何だか知らんし
Perlのバージョンも分からんが、
多分、単に漢字を文字クラスの中で使えない可能性が極めて高い

例えば、. が漢字一文字にマッチするか試してみればいいが、
多分そうなっていないだろう

275 名前:デフォルトの名無しさん [2008/09/30(火) 09:41:18 ]
php5です


文字列
<tr>
<td colspan="2"><img height="5" src="localhost/aaa.jpg" width="1"></td>
</tr>
<tr>
<td width="100" height="147"><a href="/aaaa/bbbb/" title="hogehoge"><img src="localhost/aaa/bbb/ccc.jpg">

この文字列の中のaタグのすぐ後ろのimgタグのURLを取りたく

preg_match("/"<a href=\".*?\" title=\".*?\"><img src=\"(http.*?\.jpg)\">/i", $body, $match);

こうしてみましたが、マッチしません
どのように書けばよろしいでしょうか



276 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 10:48:28 ]
>>275
imgタグの中で、srcは必ず先頭に来る前提でいいのかな。
/<a[^>]+><img src="([^"]+)/
で、$1を取り出す。

277 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 11:13:03 ]
空白1つを含む文字列にはマッチするけど、2つ以上連続の空白でマッチしないようにするには
どうすればいいのでしょうか?

ab cd ef  gh

この場合、"ab cd ef"にマッチ。

278 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 12:13:17 ]
>>277
{1}

279 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 12:32:32 ]
>>277
[^ ]+( [^ ]+)*

280 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 12:50:20 ]
>>279
サンクス
うまくいきました

281 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 16:09:48 ]
>>276
できました
ありがとうございました

282 名前:デフォルトの名無しさん [2008/09/30(火) 23:00:39 ]
質問です。

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

●検索か置換か?
検索

●説明
XMLファイルのタグの中を検索したいです

●対象データ
<aaa><bbb>hogehoge</bbb></aaa>

●希望する結果
aaa と bbb と /bbb と /aaa のみ検索される

色分けをしたいのです。
おねがいしまう

283 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 23:09:21 ]
(?<=<).*?(?=>)

284 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 23:11:00 ]
しまうーなら答えざるを得ない

285 名前:デフォルトの名無しさん [2008/09/30(火) 23:24:06 ]
今回のパナソニックって
s/松下[電器産業]/パナソニック
でいいですか?



286 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 23:29:57 ]
電波ぽいのが気になるが
s/松下(電器産業)?/パナソニック/ じゃないか

287 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 23:40:13 ]
>>283
できました。ありがとうございました!




288 名前:デフォルトの名無しさん [2008/09/30(火) 23:43:26 ]
そうだw
()はグループ化で
[]は1文字だけか

289 名前:282 mailto:sage [2008/10/01(水) 00:16:25 ]
やっと理解できたwwwwwwwwww
理解できたってか調べるのに時間かかりました
(?<=<) これで < が前に存在することを保証する
.*? 任意の文字の連続(最短)
(?=>) > が後に続くことを保証する
283は天才www
チラ裏スマソ


290 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 00:18:33 ]
お礼よりも… 分かってんだろうなボウズ

291 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 00:19:44 ]
>>290
わかりませんサーセン

292 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 00:25:56 ]
さっきからチンポ出して待ってんだから… と言えば何か分かるだろ。

293 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 04:10:07 ]
そういうのりきもいよボケ

294 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 05:53:23 ]
>>293
お前ここは初めてか?
いいから力抜けよ。

295 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 07:12:33 ]
>>294
むしろお前が初めてか?
空気嫁よ



296 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 09:46:51 ]
アッー!

297 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 10:05:59 ]
最近の腐女子は正規表現も嗜むのか。
時代は進んでるな。

298 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 11:51:08 ]
PHP4での処理をしております

$str = preg_replace('/(<br \/>|<br>)/i', '<br />', $str);

いろいろやっているうちにチンプンカンプンでしまいには変な顔文字に見えてきて挫折しそうなので
どうかご教授お願いします

やりたい事は$strの中のbrタグが連続して2つ以上あればそれを1つに置き換えたいです
条件として、<br>と<br />を同じ文字列として考えるのと、たまにbrの間に改行コードがあります
<br>\n<br>\n<br /> → <br />
このようにbrタグの間に改行コードがあってもbrタグは連続するものとしたいです
よろしくお願いします



299 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 12:13:59 ]
php -r '$s="<br>\n<br>\n<br />";echo preg_replace("/((<br>|<br \/>)\n?)+/i", "<br />", $s)."\n";'

300 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 12:21:01 ]
brタグのすぐ後ろの改行も吸収してしまうが
$s="<br>\n<br><br />\ntest<br>\n\n<br />";
$str = preg_replace("/(<br( +\/)?>\n*)+/i", "<br />", $s);

301 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 13:19:37 ]
>>299-300
望みどおりの処理ができました
ありがとうございました


302 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 16:41:07 ]
\d+\.\d+\.\d+\.\d+
でIPアドレスを取得しようとしてますが、
127.0.0.1 にだけはマッチさせたく無いです。
どうやったらいいですか?



303 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 17:16:01 ]
(((((((((((((((([^1]*)*(1+[^2][^1]*)*)*)*(1+[^7][^1]*)*)*)*(1+[^.][^1]*)*)*)*(1+[^0][^1]*)*)*)*(1+[^.][^1]*)*)*)*(1+[^0][^1]*)*)*)*(1+[^.][^1]*)*)*)*(1+[^1][^1]*)*)*

304 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 17:16:18 ]
不可能ではないが2段階に分けたら?
なにがなんでもひとつの正規表現でやらなきゃならない?

305 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 17:18:55 ]
>>303
((((;゚Д゚))))ガクガクブルブル



306 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 17:23:05 ]
>>303
そんなの死んでもイヤです!

307 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 17:28:43 ]
まあIPアドレスなら127.まででもいいとは思うけどな。

308 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 21:02:00 ]
文字列がIPアドレスのみなら

$str="192.168.0.1";
preg_match("/(127\.0\.0\.1)?(.*)/",$str,$m);
echo $m[2];

でいけるよな

309 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 21:29:36 ]
127…でやってみた?

310 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:16:55 ]
s/127.0.0.1/うんこ/g

/\d+\.\d+\.\d+\.\d+/gp

s/うんこ/127.0.0.1/g


311 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:18:12 ]
>>309
>308の事なら中身の有無で分岐すればおk

312 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:19:03 ]
ドットにエスケープなんているの?

313 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:23:17 ]
可読性

314 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 00:55:36 ]
ドットってエスケープいらないの?

315 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 01:04:01 ]
すまない、必要だった
エスケープしないと任意の一文字でしたね



316 名前:デフォルトの名無しさん [2008/10/04(土) 01:51:11 ]
VC++でマルチバイト(ユニコードではない)日本語文字列を対象とした正規表現ライブラリの定番は何ですか?

317 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 09:19:23 ]
Unicodeに変換しちゃだめなの?

318 名前:デフォルトの名無しさん [2008/10/04(土) 21:25:17 ]
ユニコード用しかないのか・・・。
VC++でまともな正規表現やろうと思ったら、ユニコード用の正規表現ライブラリしかないんですかね?
VBAのRegExpコントロールとか、boostのregexとか。

いますごく困ってるのは、VBAのRegExpコントロールを使ってVC++でMBCSプログラミングをしてるんですが、
MatchオブジェクトのFirstIndexプロパティが文字数単位で返ってくることなんですよ。
MBCSだと、バイト単位でどの位置なのか知りたいのに。
もちろん対象となるテキストの先頭から2バイト文字かどうかを調べていけば、
何文字目が何バイト目かを調べることはできるけど、テキストが長くなると処理速度的に満足できない。

ユニコードで何文字目→MBCSで何バイト目を高速に計算するAPIってないですか?

319 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 21:43:13 ]
あと思いつくライブラリは鬼車だけど、どうだろう
何バイト目?ってのは結局頭から見ていくしかないので高速化も難しい
でも長いテキストでも見る開始位置を後ろに持っていくぐらいはできるかな

320 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 23:14:36 ]
>>319
鬼車というのはちょっと見てみましたが、クセがありそうなのでやめときます。
文字数→バイト変換はやっぱり先頭から真面目にカウントするしかなさそうですね。

過去のカウント結果を保持するような文字数→バイトカウント専用のクラスを作って、
同じテキストに関するカウントの高速化をするとか工夫してみます。

321 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 10:09:25 ]
MBCSの定番と言えばbregexp.dllじゃね?あるいは鬼車を同じIFにしたbregonig.dllとか。
鬼車以上にクセがあるが。

322 名前:デフォルトの名無しさん [2008/10/06(月) 13:33:23 ]
一括置換ソフトを使い、
複数のファイルにて、一括複数行置換をしたく、そのために正規表現を使わなくてはなりません。
色々と試してみてもうまく検索されないので教えてください。

<!--shinobi1-->
<script type="text/javascript" src="x7.shidareyanagi.com/ufo/ここに9桁の英数字があります"></script>
<noscript><a href="x7.shidareyanagi.com/bin/gg?ここに9桁の英数字があります" target="_blank">
<img src="x7.shidareyanagi.com/bin/ll?ここに9桁の英数字があります" border="0"></a><br>
<span style="font-size:9px"><img style="margin:0;vertical-align:text-bottom;" src="img.shinobi.jp/tadaima/fj.gif" width="19" height="11">
<a href="sbc.rentalurl.net" target="_blank">美容整形</a></span></noscript>
<!--shinobi2-->

ファイルにより、上記の中で、「ここに9桁の英数字があります」のところがそれぞれ異なります。

その複数ファイルの中で<!--shinobi1-->から<!--shinobi2-->まで囲まれた部分を検索にかける場合、正規表現ではどう書きますでしょうか?

一括置換ソフトは
複数行置換 を使用しております。

323 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 13:37:08 ]
>>322
<!--shinobi1-->.*<!--shinobi2-->
ではダメなの?



324 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 13:39:04 ]
<!--shinobi1-->.*<!--shinobi2-->

325 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 13:57:09 ]
最長一致しちゃうから、.* じゃマズいでしょ。
途中にコメントがないなら、<! を避ければいけそう。



326 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 19:16:41 ]
.*? でいいんじゃ

327 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 21:30:13 ]
最短一致で何か問題あるの?

328 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 21:59:53 ]
だれもそんなことはいってないが

329 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 08:19:34 ]
正規表現を使わなければならない、って云ってるのに
やり方が分からないってどういう事だ

330 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 09:48:57 ]
その一括置換ソフトとやらが正規表現を使えるってことじゃ?

331 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 10:25:20 ]
sedで、

 <a href="http://○○<br><br>○○ target="_blank">△△</a>
 <a href="http://○○○○ target="_blank">△<br><br>△</a>

にマッチングして、<br><br>を削除したいのですがどの様な記述になるのでしょうか。


332 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 10:28:10 ]
(<br>){2,}

333 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 10:35:57 ]
追加

 □□<a href="http://○○<br><br>○○ target="_blank">△△</a>□□
 □□<a href="http://○○○○ target="_blank">△<br><br>△</a>□□

失礼しました。<a href=""></a>の前後にも文字列があります。<a href=""></a><a hr・・・と
繰り返している可能性もあり、<a href=""></a>内で<br><br>が発生している時はsedで取り除きたいのです。

334 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 11:22:35 ]
<a href="">.*?(<br>){2,}.*?</a>

335 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 11:33:58 ]
>>334
有り難うございます。 <a href=".*?(<br>){2,}.*?</a> と変更しまして、ためしましたと所、

 <a href=""></a>○○<br><br>○○<a href=""></a> 

にもマッチングしてしまいます。



336 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 14:14:50 ]
/(<a href=.+?>.*?)<br><br>(.*?<\/a>)/$1$2/ でどうだ

337 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 14:17:50 ]
あ、まちごうた。これでどうだ
/(<a href=.+?)<br><br>(.*?>)/$1$2/
もしくは
/(<a href=[^<>]+?)<br><br>(.*?>)/$1$2/


338 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 17:13:07 ]
>>337
有り難うございます。
会議が入ったので取り敢えずの中間報告です。どちらも100件の小さいログサンプルでは、
<a href="○○<br><br>○○></a>にはちゃんと働いてくれました。

良い感じだったのですが、<a href="△△">○○<br><br>○○</a>□□<a href="・・・
とリンク文字間に<br><br>が有る場合は反応いたしませんでした。


339 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 20:37:43 ]
このスレに複数のbrタグを一つにする正規表現があるから
それを活用するといいよ

340 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 17:14:42 ]
その妙なHTMLを吐き出してる奴を修正する。

341 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 20:22:59 ]
C#の正規表現で、「スペース(半角、空白)か改行しかない」という
条件はどう表現するのでしょうか。

^\s+\n と ^\s*$ を組み合わせる事で表現出来たような気したんですが
------


a

------
もマッチしてしまいます。

342 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 20:46:45 ]
空白が何を指すのかちょっとわからないけど
^\s+$ か ^\s*$で通常なら事足りるはず

メソッドの使い方間違えてるかもしれないから
とりあえずC#のコード貼ってみて

343 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 21:55:13 ]
>>342
親切に有り難う御座います。
^\s+$ で無事マッチさせる事が出来ました。
一応メソッドの方は汚いですが抜粋すると以下の様にして判定しており
buffの中に正規表現が入っていてstTargetを判定している感じです。

for (int i = 0; i < buff.Count; i++)
{
    bool regexCheck;
    try
    {
        regexCheck = Regex.IsMatch(stTarget, buff[i]);
    }
    catch
    {
        return true;
    }
    if (regexCheck == true)
    {
        return true;
    }
}

344 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 04:23:35 ]
質問に来ました。

●正規表現の使用環境
boost regexを使用した「Flexible Renamer」というファイルリネームソフト

●検索か置換か?
置換

●説明
[aaaa][bbbb].xxx などとなっているファイル名の最初の[]だけを()に変えたい
(aaaa)[bbbb].xxx となるようにしたい

ソフトがバグっている可能性もあるのですが、いろいろやったけどできません。

345 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 04:28:04 ]
それで質問は?



346 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 07:52:39 ]
s/^(.*?)\[(.*?)\](.*)$/\1(\2)\3/
できないのはソフトのバグではない
じゃあ何の所為なんだろうね

347 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 11:11:02 ]
>>346
d
やっぱりできませんでした
どうもソフト自体が正規表現を受け付けないみたい、説明にもヘルプにもできるって書いてあるのになー
別のフリーソフト探します

348 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 11:56:11 ]
ちょっと触ってみたけど、高度なりネームにチェック入れたか?

349 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 12:11:36 ]
高度なリネームにチェックして、正規表現を選択、
検索:^(.*?)\[(.*?)\](.*)$
置換:\1(\2)\3
で動作したが。

350 名前:346 mailto:sage [2008/10/24(金) 12:18:31 ]
えっ、そこからなの?
ソフトの使い方とか予想外だった

351 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 09:42:10 ]
HTMLのあるタグの中身が入れ子になっていても確実に外側にマッチできる正規表現ってありませんか?
正規表現だけに頼らず、HTMLをパースするしかないんでしょうか?

<div class="1">
あああ
<div class="2">いいい</div>
</div>
↑この、<div class="2"> があろうとなかろうと、<div class="1"> に対応する</div>までをマッチさせたい

352 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 10:23:24 ]
たぶん、正規表現マッチのみだと、荷が重いか無理。
その例みたいに、「divのみで2重まで」とか条件があればまだしも。

353 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 11:17:41 ]
HTMLとかXMLとか扱うのなら、たいていのケースでパーズしたほうが簡単。


354 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 13:40:07 ]
世の中のHTMLがまともなHTMLばかりなら
それで苦労ないんだけどなw

355 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 01:02:35 ]
ネストが狂ってたり閉じタグが無かったりなんてのはザラだからなー



356 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 01:19:07 ]
一つの正規表現では無理だが、ループ作れば何とか。でも、自分では普通かかんよねー。
$match = '';
$str =~ /(<div class="1">)/g or die "no match";
$match .= $1;
while ($str =~ m{\G(.*?</div>)}gs) {
 $match .= $1;
 last if $1 !~ m/<div/;
}

357 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 11:17:52 ]
現在『[\x20-\x7E]』とやって半角文字を抽出してるんですが
半角の空白のみを含まない場合は、どうやって表現したら良いでしょうか
お願いします。

358 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 12:25:44 ]
>>357
アスキーコード表を眺めてみましょう。

359 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 12:38:16 ]
>>358
ありがとうございました『[\x21-\x7E]』でいけました。
ところで、vb2008のRegexクラスでは、^による否定ってできないのでしょうか

360 名前:359 mailto:sage [2008/10/28(火) 13:01:21 ]
使えることがわかりました。自分の記述が悪かったみたいです。ありがとうございました。

361 名前:デフォルトの名無しさん [2008/10/29(水) 18:31:37 ]
C#で

数字4桁で後ろに
何もない
ハイフンが1個
ハイフンと小文字のアルファベットa-z
の3パターンにマッチするには、どう書けばいいのでしょうか


1234
2345-
7896-d



362 名前:デフォルトの名無しさん mailto:sage [0-9]{4}(-[a-z]?)? [2008/10/29(水) 19:21:52 ]
>>361
>>2あたりは一通り読んだのか?

363 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 21:45:54 ]
優しさに泣いた

364 名前:デフォルトの名無しさん [2008/10/30(木) 01:04:02 ]
環境)OS:WinXP-Pro,Mem=3GB,開発ソフト:FlashCS3-Pro(Player9.0,AS3.0)

Flash-ActionScript 3.0で正規表現を用いて、テキスト中の
 1.2345
-0.1234
10.5678

といった数値を抽出しようと思いますが、この場合の小数点の扱いはどのようになるのでしょうか?
テストで .[0-9] (小数点とその右の数値を抽出)を行ったところ、e1 というコードが現れ、
全く出鱈目な結果を得ました。
(ActionScript3.0で「.」は任意の1文字なので仕方ないのですが・・・)

Flashの場合に限らず、小数点を含む類似のサンプルがありましたらご紹介下さい。


365 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 01:07:55 ]
OSとメモリに和んだ

任意の一文字を表す . を \ でエスケープすれば
. そのものになると思うよ



366 名前:364 mailto:sage [2008/10/30(木) 01:31:46 ]
>>365
早速のレス有難うございます。

たった今、手元の本で見つけたのですが、 . はAsciiコードで \x2E と表現するということなので、
これで試しましたが駄目でした(Unicode表記 \u002E でも駄目でした)

半角マイナス(\x2D)やスラッシュ(\x2F)は問題なく抽出できたのですが・・・


367 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 02:06:44 ]
正規表現オブジェクトをどうやって作ったのか
そのオブジェクトとどうやってマッチさせたのかわかるコードを貼ってみて

もし前者で new RegExp("\x2E[0-9]") とかしてるとややこしいことになる
正規表現リテラル /\x2E[0-9]/ や /\.\d/ なら期待通りに動くはず






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

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

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