トップページ⇒php
981コメント301KB

正規表現道場@2ch Part4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん05/01/17 11:51:25ID:SH1ygN1P
Perlに限らずスクリプト系言語で大活躍の正規表現。
このスレは有用そうな正規表現を紹介したり、
どう表現したらいいかわからないときに質問をしたりするためのスレッドです。
質問するときは使用言語や得たい結果をなるべく詳しく書きましょう。

註:& や " を書くときには、& " と描いておきましょうね。

Perlメモ
 http://www.din.or.jp/~ohzaki/perl.htm
正規表現メモ
 http://www.kt.rim.or.jp/~kbk/regex/regex.html
Regex::Diagram.pm
 http://www.cc.rim.or.jp/~midorin/mad-p/RegexDiagram.html
正規表現
 http://www.cc.rim.or.jp/~midorin/mad-p/perl/benkyou/PRC2kRegex/
UNIX正規表現入門 目次
 http://www01.u-page.so-net.ne.jp/jc4/hiroyuki/rex_index.html
Regular Expression(Riue ちゃんの正規表現講座) - Index
 http://www.sixnine.net/regexp/

ほとんどは↓のリンク集にまとまっています。
正規表現最新リンク集2002
 http://www2.famille.ne.jp/~akio1998/l_grep.html

過去スレ
正規表現道場@2ch
 http://pc.2ch.net/test/read.cgi/php/996105815/
正規表現道場@2ch Part2
 http://pc2.2ch.net/test/read.cgi/php/1038146241/
正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g
 http://pc5.2ch.net/test/read.cgi/php/1069245758/
06526232005/09/09(金) 19:15:40ID:???
よく考えたらレス番数字の正規表現はこのままだと
「>132」等の全角半角混じりでもあてはまってしまうので
([0-9]+|[0-9]+)
でした。。

>>646
>>648
2chの生datをかちゅ〜しゃdatに変換しようとしているのですが
生datを見てみると、レスアンカーは
例えば「>>1」だと
「<a href="../test/read.cgi/server/0123456789/1" target="_blank">&gt;&gt;1</a>」
となっているので、それらを除外させる為に前後につけています。
その正規表現も正しいのかどうか・・。


あと すみません、>>640さんや>>650さんのものだと
例えば「>90-100」だと
「〜&st=90&to=90&nofirst=true〜」となってしまうのです
望む結果は「〜&st=90&to=100&〜」なのです・・

何だか駄々をこねてるみたいで申し訳ないです・・。
06536502005/09/09(金) 20:44:02ID:???
うまくいかない物を貼ってすいません。
今度は大丈夫だと思います。

<script>
line = "&gt;2 &gt;3 &gt;4 &gt;5 &gt;6 &gt;7-8 &gt;90-100 >100-200";
sp1 = "<a href=\"http://server.2ch.net/test/+read.cgi?bbs=board&key=123456789&st=";
sp2 = "&to=";
sp3 = "&nofirst=true\" target=\"_blank\">";

function toascii(s) {
dest = "";
for (i = 0; i < s.length; i++) {
ch = s.charCodeAt(i);
06546502005/09/09(金) 20:45:42ID:???
if (ch >= 0xff10 && ch <= 0xff19)
dest += String.fromCharCode(ch - 0xff10 + 0x30);
else
dest += s.charAt(i);
}
return dest;
}
function replacefunc(m) {
if (m.match(/(&gt;|&gt;&gt;|>|>>|≫)([0-90-9]+)([-−ー]([0-90-9]+))/)) {
return m.replace(/(&gt;|&gt;&gt;|>|>>|≫)([0-90-9]+)([-−ー]([0-90-9]+))/,
sp1 + "$2" + sp2 + "$4" + sp3 + "$1$2$3<\/a>"
).replace(/(st|to)=[0-90-9]+/g, toascii);
} else {
return m.replace(/(&gt;|&gt;&gt;|>|>>|≫)([0-90-9]+)/,
sp1 + "$2" + sp2 + "$2" + sp3 + "$1$2<\/a>"
).replace(/(st|to)=[0-90-9]+/g, toascii);
}
}

line = line.replace(/(&gt;|&gt;&gt;|>|>>|≫)([0-9]+|[0-9]+)([-−ー][0-90-9]+)?/g,
replacefunc);

document.write(line);
</script>
06556512005/09/10(土) 11:01:20ID:maA6hdJk
preg_match("/^(x83[\x40-\x96]|\x81\x40|\x81\x5B)+$/", $nnn )
PHPで全角カタカナとハイフンと全角スペースだけを通したいんだけどこれ間違えてる?
06566232005/09/10(土) 19:09:02ID:???
>>653-654の>>650さん
すみません、後でじっくりやってみます・・・。
正規表現の内部(?)でも javascript使えるんですね。
0657名無しさん@そうだ選挙に行こう2005/09/10(土) 19:19:19ID:???
>>655
preg_match("/^(\x83[\x40-\x96]|\x81\x40|\x81\\x5B)+$/", $nnn )
にしたら動いた。
\x5bは'['に当たるからエスケープしないとダメ
0658名無しさん@そうだ選挙に行こう2005/09/11(日) 19:40:59ID:???
html-lintって正規表現の塊?
0659名無しさん@そうだ選挙に行こう2005/09/11(日) 22:35:06ID:???
公開してるからソース読んでみろ
0660nobodyさん2005/09/14(水) 09:43:56ID:krHmg2tG
詳説正規表現って何処に売ってるの?
近くの本屋になかった。
0661nobodyさん2005/09/14(水) 09:47:46ID:???
新宿の紀伊国屋なら売ってそうだけど。
立ち読みする必要ないなら通販で買えば。
0662nobodyさん2005/09/15(木) 00:14:36ID:???
オライリーの本置いてある書店は
そこそこでかいとこか、技術書みたいな本が置いてあるようなとこくらい。

オライリーが置いてあるとこでも、全部置いてあるわけじゃないから
>>661の言うように中身確認する必要がなければ通販で買っちゃうのが手っ取り早いかも。

紀伊国屋とかならネットで在庫確認出来るから、利用するのもアリ。
0663nobodyさん2005/09/15(木) 00:17:41ID:???
ヨドバシとかビックでも買えるね。
0664nobodyさん2005/09/15(木) 00:45:18ID:???
ジュンクを忘れていませんか
0665nobodyさん2005/09/15(木) 04:31:19ID:???
大学生協行けよ。
0666nobodyさん2005/09/15(木) 13:19:06ID:???
まあまずはおめーはどこに住んでんだっつー話だな。「近くの」じゃ何とも言えんし。
0667nobodyさん2005/09/15(木) 13:30:10ID:???
660さんにげてー
0668nobodyさん2005/09/15(木) 21:28:10ID:???
Perlにて、正規表現によるマッチングを使おうとして、


$temp[7] =~ /(*.)時(*.)分/;

と使うと、以下のようなメッセージが出ます。

Quantifier follows nothing in regex; marked by <--HERE in m/(* <--HERE .)時(*.)分/; at sub2.pl line 161.

初めてでるエラーメッセージなので憶測ですが、HEREで示されたメタ文字[*]が、掛け算の演算子と間違えて認識されているのでしょうか?
文字コードはShift_JIS、開業コードはCR+LFです。ぜひアドバイスお願いします。。。
0669nobodyさん2005/09/15(木) 21:44:26ID:???
.*
0670nobodyさん2005/09/15(木) 21:53:15ID:???
>>669
ぐおおおおお、本当ですね…
こんな簡単なことでスレ汚してすいません… 回線切ってこのプログラム仕上げてから首吊ってきます…
0671nobodyさん2005/09/15(木) 21:59:21ID:???
翻訳サイトの使い方くらいは知っとこうね。
0672nobodyさん2005/09/16(金) 17:59:17ID:???
>>661-667
ありがとう!
熊谷で売ってなくて、大宮のそごうでも売ってなくて、結局新宿の紀伊国屋まで行ってきたよ。
半端じゃない数だな…。
0673nobodyさん2005/09/16(金) 18:01:35ID:???
何が半端じゃない数なの?
0674nobodyさん2005/09/16(金) 18:46:00ID:???
>>673
本の数。
0675nobodyさん2005/09/16(金) 19:00:48ID:???
ああなるほど。


ところで、最近正規表現の入門的な書籍がたくさん出てきてるみたいだけど、
プログラミングや正規表現の初心者向けに一冊すすめるとしたらコレ、
っていうのは何かある?
0676nobodyさん2005/09/17(土) 15:02:40ID:???
詳説くらいの内容を必要としないなら、ネットの解説サイトの類で事足りる気がしなくもない
0677nobodyさん2005/09/18(日) 21:21:10ID:???
PHPで正規表現を使った置換について質問です。
3以上の数字が、特定の文字列(Xとする)の後に来た場合にマッチさせ置換します。
数字は全角でも半角でもマッチとし、マッチした部分を\\1後で使います。
数字は二桁までを範囲とします。

$pattern = "/X([0-9]?[3-9]|[0-9]?[3-9])/";
preg_replace ("$pattern", "X<span class=\"level\">$1</span>", $aaaa);


これだとうまくマッチしないのですが、何が原因でしょうか。
0678nobodyさん2005/09/18(日) 23:33:12ID:???
10以上で一の位が0〜2になってる数がヒットしないよなそれ。
0679nobodyさん2005/09/19(月) 01:36:01ID:???
(?:[1-9][0-9]|0?[3-9]) とかじゃねー?
0680nobodyさん2005/09/19(月) 16:33:59ID:???
>>671
数量詞はregexで何にも続きません; --<によってマークされて、m/(*<--HERE。)時(*)分/のHERE; sub2.plに、161を裏打ちしてください。
0681nobodyさん2005/09/19(月) 16:54:25ID:???
なんか、php で正規表現ほげる場合って、二重に囲まんといかんから面倒だな。
"/^fuckyou$/"
0682nobodyさん2005/09/19(月) 17:38:25ID:???
シングルクォートで囲むと少しはマシになるよ
0683nobodyさん2005/09/19(月) 17:50:19ID:???
少しはとは?

表現のなかに ' やら " が出て来た場合面倒杉。
0684nobodyさん2005/09/19(月) 18:50:05ID:XLGKZohV
↓こんな風に、適当な文字列の『』で囲まれた部分に特定の文字(この場合“か”とする)を
含まれたものをヒットさせたいのだが、うまくいかない。
$line =~ /『.*?か.*?』/g;
だと、例2のような間に』と『あるやつも引っかかってしまうのだが・・・・・・・わかる人お願い。

例1 $line = "あいうえお『かき』くけこさし『すせ』そ";  →○
例2 $line = "あい『うえお』かき『くけ』こさしすせそ";  →×
0685nobodyさん2005/09/19(月) 18:54:01ID:???
/『.*?か[^『]*?』/
0686nobodyさん2005/09/19(月) 20:17:57ID:???
>>685
はや。
ありがと。
0687nobodyさん2005/09/19(月) 21:28:53ID:???
>>683
"で囲むと、$とかもエスケープしなきゃいかんでしょ。その分が少し。
0688nobodyさん2005/09/19(月) 21:40:28ID:???
>>677
こういうのよく見るけど、
$pattern を用意して、preg_replace() かける時に
わざわざ再度ダブルクォートで囲うのって
個人的にはちょっと…怖いかも。
副作用がありそうで。
0689nobodyさん2005/09/20(火) 23:16:09ID:???
Javaで、文字列をスペース区切りで分割
ただし、"で囲まれた文字列はスペースで分割しない
ということをやりたいんだけど、これって正規表現で
うまくできる?
例:
dir "c:\abc def" ghi jkl

dir
c:\abc def
ghi
jkl

こんな感じに分割したいです。
0690nobodyさん2005/09/20(火) 23:38:25ID:pDhdrwjA
できません。
0691nobodyさん2005/09/21(水) 20:40:37ID:???
置換に関しアドバイスください。

VK_C, 57634, NOINVERT, CONTROL, VIRTKEY
VK_BACK, 57643, NOINVERT, ALT, VIRTKEY
VK_F6, 57681, NOINVERT, SHIFT, VIRTKEY
VK_Z, 57643, NOINVERT, CONTROL, VIRTKEY

これを1 or 2回の置換で下のように編集できるでしょうか?

CONTROL C, 57634
ALT BACK, 57643
SHIFT F6, 57681
CONTROL Z,57643

秀丸つかってるんですが、タグつき正規表現に関する知識足りず、
ノーマル置換とExcelでまかなっている現状です。
0692nobodyさん2005/09/21(水) 22:26:39ID:???
秀丸つかったことなけど普通に
VK_([^,]+),\s+(\d+),\s+[^,]+,\s+([^,]+).*$ → \3 \1, \2
で駄目なの?
0693nobodyさん2005/09/21(水) 22:30:35ID:???
>>682-683
エスケープが嫌ならヒアドキュメントで変数に代入してからreplaceに放り込めばいいじゃない
0694nobodyさん2005/09/22(木) 08:50:22ID:???
>>692
ありがとうございます。ただ少し手直し必要だったので、一応のせておきます。

検索 VK_\f[A-Z0-9]+, [0-9]{5}\f, [A-Z]+, \f[A-Z]+\f,.+
置換 \3 \1

でも意味はあまり理解してません。
0695nobodyさん2005/09/23(金) 23:27:20ID:???
@n →@n-1
Vn →Vn/2

例
@1 →@0
V127 →V63 V63→V31 V31→V15

というように、@とVに続く数値をそれぞれ「-1」、「1/2」になるように処理したいのですが、
どのような正規表現を記述すれば良いでしょうか?


06966952005/09/23(金) 23:28:24ID:???
すみません、失礼しました

@n →@n+1

例
@0 →@1

の誤りでした。
0697nobodyさん2005/09/24(土) 01:32:55ID:???
$1eval($2+1)
$1eval($2/2)
0698nobodyさん2005/09/24(土) 01:41:34ID:PQeiuh7H
perlにて

$valに含まれる"a"全てを"ab"に置換する

$val = "aaa";
$val =~ s/a/ab/g;
print "Content-type: text/html\n\n";
print "$val";


/gというのは繰り返しということですが、
どのような繰り返しなのか理解できていません

1.置換前$valを把握し、参照するというような形で文字を繰り返し置換する
 出力結果 ababab

2.毎回$valの最初から繰り返し置換していくので
置換後の"ab"にも"a"が含まれているので永久ループになる
出力結果 aaaaa.......................... (永久に終らず)

1を望んでいるのですが2だった場合が怖くて試せません
実際はどのような結果になるのでしょうか?
もし2だった場合は実際どのように記述すればいいのかご教授してくれると助かります
0699nobodyさん2005/09/24(土) 01:55:09ID:???
>>698
まず最初の "a" に /a/ がマッチして "ab" に置換したら、
次は $val 中の次の文字 (2文字目の "a") から /a/ のマッチを開始する。
というのを繰り返すので、 2. にはならないから安心しる。

2. だったら怖くて誰も /g を使いたがらない罠。
0700nobodyさん2005/09/24(土) 02:02:00ID:PQeiuh7H
698です
>>699
永久にはならないのですね、安心しました
これでまたいろいろ試せそうです
早い解答どうもありがとうです
07016952005/09/24(土) 03:26:00ID:???
>>697
すみません、これFlexRenamerなどで置き換えリストを作る場合、

ファイル名置換指定:  $1eval($2+1) or $1eval($2/2)
にするとして、
ファイル名検索指定: の文字列はどのように入れればいいんでしょう?
07026952005/09/24(土) 03:43:59ID:???
あと、検索条件なんですが、文字列が
@に続く数値
Vに続く数値
に特化して計算処理をさせたい次第です。
@、V 以外に続く数値(TやOなど)もテキストファイル中に含まれるのですが、
それらの数値はそのままにしておきたいのです。
0703nobodyさん2005/09/24(土) 23:07:27ID:???
>>701
> すみません、これFlexRenamerなどで置き換えリストを作る場合、

おいおい、どんな言語やソフトを使ってるかは先に言えっつーの。

で、 Flexible Renamer ってのを見てみたけど、
ファイル名置換指定で -1 とか 1/2 とかいった演算はできないみたいね。
何か適当なスクリプト言語か何かで処理した方が良さそう。
0704nobodyさん2005/09/25(日) 21:10:04ID:???
正規表現に関するメールマガジンとかある?日本語で。
メールじゃなくても郵便でもいいや。
0705nobodyさん2005/09/25(日) 23:03:33ID:???
郵便てキミ…
0706nobodyさん2005/09/26(月) 00:12:31ID:???
regexはなんと読むのですか。
0707nobodyさん2005/09/26(月) 00:15:01ID:???
フェデックス
0708nobodyさん2005/09/26(月) 01:14:20ID:AIxnVq6m
すみません、置換ソフト「Repl-Ace」で正規表現置換を行いたいのですが
どうしてもうまくいきません。どう書けばいいでしょうか。

やりたいこと
<HTML>で始まり、<!--ここまで-->で終わる部分を削除する。
この区間に含まれる文字や文字数は不定、日本語アリ。複数行。

書いてみてダメだった表現
<html>.*--ここまで--> ←処理されない
.*--ここまで--> ←<html>からの処理ではない。<!--ここまで-->のある行だけ削ったようだ
<html>[\s\S].*<!--ここまで--> ←処理されない

Perlメモとか読んでみましたが、・・・ごめんなさい見方がわからない(というか理解が?)
このソフトについているリファレンスを見てやってます。
07097082005/09/26(月) 01:27:01ID:???
置換したいのはこんな文字列です。
<HTML>
<head>
<meta http-equiv=Content-Type content=text/html; charset=Shift_JIS>
<title>test</title>
</head>
<body bgcolor="#000000">hogehoge<!--ここまで-->
test</body></html>
0710nobodyさん2005/09/26(月) 02:04:56ID:???
.が改行にマッチしてないのかな?そんなオプションない?
0711nobodyさん2005/09/26(月) 02:08:30ID:???
>>708
こんなんでどうでしょ?
<HTML>[\S\s]+<!--ここまで-->
0712nobodyさん2005/09/26(月) 10:50:59ID:???
Javascriptを使ったwshなんですが、http://menu.2ch.net/bbsmenu.htmlにある

<A HREF=http://www.2ch.net/ TARGET="_top">2chの入り口</A><br>

<A HREF=http://info.2ch.net/guide/>;2ch総合案内</A>

・・・・(ry

このような2chのメニューから、板のURLと板の名前の二つを取り出したいのですが、
うまくいきません。
自分で書いたのは、/<A HREF=(\S*?)\s?.*?>(.*?)<\/A>/ です。
0713nobodyさん2005/09/26(月) 15:11:05ID:???
>>708
そのソフトは大文字小文字無視という設定無いみたいね。BBSでやっと見つけた。

>>712
最短マッチを否定の最長マッチに置き換える手があるよ
/<A HREF=([^ >]+)[^>]*>([^<]+)<\/A>/
0714nobodyさん2005/09/26(月) 15:59:19ID:???
'/' をエスケープして "\/" とかやってるやつはばかです。
0715nobodyさん2005/09/26(月) 18:33:27ID:???
>>714
じゃあどうやるのさ?
0716nobodyさん2005/09/26(月) 19:11:50ID:???
m!/! とかやれ、って話だったらヘソで笑っちゃう
0717nobodyさん2005/09/26(月) 19:16:39ID:???
>>716
あの >>714 がまさかそんな。
07187122005/09/26(月) 20:15:43ID:???
>>713
無事できました。そんな書き方を初めて知りました。サンクス。
07197082005/09/26(月) 22:12:35ID:???
>>710
オプションは「マルチラインモード」っていうのがありますが
マッチしてないです。
・・・って、

>>711
できました。ありがとう(T△T)
07207112005/09/26(月) 22:26:07ID:???
>>713
そうそう。探したんだけど見つからなかった。
もし大文字でも小文字でも動くようにするなら、めんどくさいけどこうかな。

<[Hh][Tt][Mm][Ll]>[\S\s]+<!--ここまで-->

>>719
ドキュメントを見る限りだと、「マルチラインモード」は、
^ (行頭) と $ (行末) の処理にしか反映しないっぽいのよね。
0721nobodyさん2005/09/30(金) 02:58:44ID:???
面白い話があるからおまいら聞いてくれ。

彼女が医療関係の学校に通ってるんだが、実習か何かで精神
障害者の施設へ行ったそうなんだ。それが終わって会った時に、
単なる会話として「大変だった?」とか訊いてたら、「あなたと同じ
本を読んでる患者がいた」って言うんだよ。隠してあったエロ本が
見つかったのかと動揺してたら、「あれだよ、表紙に動物の絵が
書いてあるコンピュータの」って言うから、オライリーのを順番に
見せていったら「それそれ! フクロウのやつ」だって。

施設の人が言うには、その患者は絶対にその本を手放さないし、
取り上げると錯乱するからずっと持たせてあるんだってさ。
0722nobodyさん2005/09/30(金) 04:41:15ID:???
な・・なぜにあの本を・・・?

よっぽど正規表現が好きな人だったんだな・・彼(彼女)に足を向けて寝れない。福岡から見た方角を教えてくれw
0723nobodyさん2005/09/30(金) 07:47:42ID:???
>>721
自閉症っぽいね
知能の離れ小島といってある特定分野だけすごく集中して記憶している
0724nobodyさん2005/09/30(金) 17:14:30ID:???
こうやって、自閉症に関するデマが面白半分に広められていく・・・
ヒトの不幸は密の味ですな。
0725nobodyさん2005/09/30(金) 17:58:49ID:???
特定の物に対するこだわりの強い自閉症はあるよね。
本を抱えているからといって中身を理解しているとは限らないわけで
単純に絵が気に入っているのかもしれない。
07267212005/09/30(金) 19:21:05ID:???
>>722
いやいやw、みんなも気をつけてくれと言いたかった。
マッチがどうしてもうまくいかない時は、精神的にも
肉体的にも参ってしまうことがあるだろう?

>>725
SEとかそういった職業に就いていたことは聞いたそう。

当然ながら施設の人は(医師さえも)、「正規表現」が
何なのかも知らないわけで、彼の話を理解してくれる
相手がいないとなるといい環境ではないなと。

ひょっとしたら正規表現でしかコミュニケートできなく
なってるんじゃないか、紙と鉛筆を渡せば正規表現で
意思表示してくれるんじゃないか、などと妄想してみた。
0727nobodyさん2005/09/30(金) 20:31:46ID:???
俺、精神障害持ってる。

時間は人より掛かったけど旧帝大の電子工学科卒業してるし、情報処理の資格も持ってる。
が、本業はソフト屋じゃ無く、ハードの設計開発してる。

精神科に入院した事もあるし(2度)、今の会社もそんな事も理解した上で採用してくれた。

君らが、どんだけ精神障害者に偏見持ってるのか、あるいは無知なのかはしらないが、

『こんな風にあげつらって、楽しいのか?』
0728nobodyさん2005/09/30(金) 20:53:55ID:???
まぁ俺も閉鎖病棟にぶち込まれた過去を持ってるが、
世の中にはいろんな人がいるんだよね。
0729nobodyさん2005/09/30(金) 20:56:58ID:???
スレ違いだし、こんなふうに不快に思うひとも少なからずいるわけで、
このへんでもういい加減やめれ。
0730nobodyさんNGNG
m|こうやってコミニュケートすればいいのだ!|
0731nobodyさん2005/09/30(金) 21:38:59ID:???
精神の障害について周りの人間は常に偏見を持っている or 無知である
というのは、それ自体が一種の偏見だな。
0732nobodyさん2005/09/30(金) 21:42:20ID:???
>>731
なるほど、>>726とかは、正確な知識等に基づいて、精神障害者をあげつらってるわけね。
そりゃすばらしい。
0733nobodyさん2005/09/30(金) 21:49:36ID:???
>>732
正規表現スレの住人の割には日本語の読み方が大雑把だな。
0734nobodyさん2005/10/01(土) 10:32:48ID:???
>>731
蓋然性を無視する危険な論法だな。
0735nobodyさん2005/10/02(日) 15:27:27ID:???
単語境界の概念って日本語にはないのか。
難しいね。
0736nobodyさん2005/10/03(月) 01:28:44ID:???
141P
4.2.1 例題について
そのためツールによっては、
示したもをサポートしていないものもある。


他にもいくつかミスがあったはず。
正規表現を扱う人はミスを見逃さない人ばっかりだと思ってました。
0737nobodyさん2005/10/03(月) 02:57:56ID:???
それは明らかに偏見
0738nobodyさん2005/10/03(月) 03:32:17ID:???
>>736
こんなとこに書かずに出版社に連絡しろよ。
0739nobodyさん2005/10/03(月) 22:32:34ID:???
>>734
「常に」
を読み落としただろ。
0740nobodyさん2005/10/04(火) 01:35:04ID:???
>>739
うぜーよ。
0741nobodyさん2005/10/06(木) 15:28:34ID:???
PHPでの正規表現による置換について質問です。

$xxxregexp = "%<TD WIDTH=\"448\" VALIGN=\"TOP\"><A href=\"(.+?)\">\n(.+?)\n<\/A>%";
$match_count = preg_match_all($xxxregexp, $data, $xxxs);

xxxregexpの二つめのグループ内を抽出して出力したいのですが、マッチしないようです。
二つめのグループで抽出するのは日本語なのですが、この場合どのように記述すれば正しいのでしょうか
0742nobodyさん2005/10/06(木) 15:55:05ID:???
EUC-JP でこれで試してみたけど取れたよ。

$data = '%<TD WIDTH="448" VALIGN="TOP"><A href="foo">
ほげほげ
</A>%';
$xxxregexp = "%<TD WIDTH=\"448\" VALIGN=\"TOP\"><A href=\"(.+?)\">\n(.+?)\n</A>%";
$match_count = preg_match_all($xxxregexp, $data, $xxxs);
print($xxxs[2][0]);
0743nobodyさん2005/10/06(木) 17:29:47ID:???
ちなみに窓の杜のHTMLなんですが、だめですね……
もう少し考えてみます
0744nobodyさん2005/10/06(木) 19:45:05ID:???
あぁ、窓の杜見てみたけど、もしかしたら改行コードかも。
\n じゃなくて \r\n とか \r?\n にしてみたら?
0745nobodyさん2005/10/06(木) 20:23:02ID:???
あー\r\nで出来ました。ほんとこんな単純な事で悩ませて済みません
ありがとうございます orz
0746nobodyさん2005/10/08(土) 03:47:34ID:???
NOn または Non
NOff または Noff

という文字列を正規表現で検索させる場合は
[N][Oo](n|ff)

こんな感じじゃ駄目なんですかね?
0747nobodyさん2005/10/08(土) 05:16:33ID:???
最初のNは普通にそのままじゃ駄目かしらん。
N[Oo](n|ff)
0748nobodyさん2005/10/09(日) 11:51:52ID:???
fgggfffggg
gfgfgfgfff
みたいに10桁の二つの文字列にマッチするにはどうしたらいいでつか?
0749nobodyさん2005/10/09(日) 12:33:11ID:???
>>748
不定の2種類の文字で構成されているってことだろうから
^(.)(\1*)(.)(\1|\3)*$
ただしこれは10文字以外でもマッチするからそれも入れるなら面倒そうだ
0750nobodyさん2005/10/09(日) 15:11:57ID:???
>>748
単に10桁ってんなら量指定子使え。
0751nobodyさん2005/10/09(日) 16:01:03ID:???
src属性の値を抜き出したいのですが、
jpg以外が混じってるとうまくいきません。
どうすればいいのでしょうか?

/<img\s.*?src="(.*?\.jpg)".*?>/i

<img SRC="test_01.gif" />
<IMG src="test_02.jpg" border="0">
<img alt="test" src="test_03.jpg" />
■ このスレッドは過去ログ倉庫に格納されています