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

正規表現道場

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/01/11(木) 02:40:43ID:uW7xEbZY
【正規表現道場の掟】

・言語不問

・質問も大歓迎。使用言語を書くのを忘れずに。

正規表現と関係ない話・質問は他スレへどうぞ。
0446nobodyさん2009/01/19(月) 05:23:37ID:???
>>445
left>.*1011121345
0447nobodyさん2009/01/19(月) 09:02:38ID:???
s/>\d*1011121345//
04484412009/01/19(月) 14:17:19ID:???
なんだかオープンソースだったようで自己解決しました。

>>442
いまだにh抜きを強要する人っているんだね。
見ず知らずの他人一人一人を啓蒙していくよりも
管理者へ[http://」をNGワードに追加してくれるよう説得した方がいいんじゃないの?
有益であれば受け入れてくれるはず。
0449nobodyさん2009/01/19(月) 14:46:18ID:???
キミは自分さえよければ他はどうでもいいんだね。
まあがんばってよ。
0450nobodyさん2009/01/20(火) 02:49:36ID:???
>>442が強要に見えるようじゃ苦労しそうだな
0451nobodyさん2009/01/20(火) 03:53:44ID:TjAtrikI
ざっと眺めた感じだと
http〜リンクを見るたび指摘(要望)してしまう442
その指摘(要望)が強要に見えてしまう441
どちらも2chに向かないタイプではあるが
頻度の度合いからして苦労するのは441の方が上だな
公衆便所のトイレットペーパーが三角に折れてなかったらイラっとしちゃうタイプでそ
0452nobodyさん2009/01/20(火) 04:11:05ID:???
あ〜ハイハイ自治厨vs爆笑田中の構図ね
スレ違いだから他でやってくれ
0453nobodyさん2009/01/22(木) 00:53:40ID:2qACQkO/
正規表現で$文字を含む検索や置換ってど〜してます?
0454nobodyさん2009/01/22(木) 01:00:03ID:???
お前は何を言ってるんだ
0455nobodyさん2009/01/22(木) 02:57:05ID:???
>>453
$は海外の通貨記号なのでうまくいかない。
\$のようにローカルな通貨記号を重ねればうまくいく。
0456nobodyさん2009/01/22(木) 03:22:48ID:???
>>455
何言ってんだこいつ
0457nobodyさん2009/01/22(木) 17:35:54ID:???
<br>***********

-----

上記のような文字列で「*」には日本語と英語が混ざっています。
そこで、、<br>から-までの間から、英語文字だけを削除するような正規表現って無いでしょうか?
<br>から-の部分は改行が入ってます。
ご存知の方居られましたら、よろしくお願いします。
0458nobodyさん2009/01/22(木) 17:45:32ID:???
>>457
>無いでしょうか?

そりゃつくりゃあるだろ
0459nobodyさん2009/01/22(木) 17:56:19ID:???
>>458
すみません。言葉足らずでした。
普段Speeeeedをいうソフトを使っているのですが、これで>>457は可能でしょうか?
0460nobodyさん2009/02/01(日) 00:44:32ID:???
>>459
ここ正規表現のスレ
ソフトの使い方はスレ違い、ソフトウェア板へどうぞ
0461OraOra2009/02/01(日) 01:57:15ID:2VNzjYUZ
検索文字の中であるパターンの検索の仕方が
分からず困っています。

どなたか御教授お願いします。

プラットフォームはOracleのPL/SQLです。

検索対象は以下の日付書式の文字です。
'yyyymmdd hh24:mi:ss'

以下のように正規表現の結果を関数で受取り
その結果をチェックしています。

bool_result := regexp_like('20080230 11:20:22','(20)[0-9]{2}(0[1-9])|1[0-2])(0[1-9]|[12][0-9]|3[01]) (0[0-9]|1[0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9])');

if bool_result then
dbms_output.put_line('OK');
else
dbms_output.put_line('NG');
end if;

現状では上記の正規表現で'0230'、'0231'のチェックが出来ず困っています。

上記の正規表現の中で'0230'、'0231'も含めてチェックする方法を
ご存知の方いましたらどなたか御教授お願いします。
0462nobodyさん2009/02/02(月) 21:43:16ID:H9hEncfV
「id="72157612930889935" primary="3224910389" secret="be0cf48b4f" server="3468" farm="4" photos="131" videos="0"」という文字列から、
「id=""」の数字を抜きたいのですが(この例であれば「72157612930889935」が欲しいです)

$patern = 'id="(.*)" ?';
ereg($patern,$line,$id);
echo $id[1]."<br />\n";

では最後のvideosの終わりのダブルコーテーションまで入ってしまいました。

>>421に近いと思うのですが?で最短マッチ?になるような気もしますし
>>412にあるように?は0か1回の繰り返しのようにも思うし…。
OSはCent4系、PHP4.1.3、関数はeregを使いました。どなたか助けて下さい
0463nobodyさん2009/02/02(月) 21:51:38ID:???
id="([0-9]*) とか・・
04644622009/02/02(月) 21:55:09ID:H9hEncfV
>>463
神!ありがとうございました。
?は結局使わず終いでしたが?とか難しいのを使うよかよっぽどスマートす。
0465nobodyさん2009/02/05(木) 13:33:36ID:???
?と*の意味を知ってたら難しいとかの発言にはならない
0466nobodyさん2009/02/06(金) 11:54:32ID:???
だよね。
{0,1}か{0,1,2,3...}かの違いだけだ。
0467nobodyさん2009/02/06(金) 16:00:49ID:???
質問する人は最低限基本は知ってて欲しいと思う今日この頃
0468nobodyさん2009/02/10(火) 00:16:26ID:???
F, f, t, S, P が正規表現のとき、
FtSPPP または FfSPPPP は
F(tS|fSP)P{3} より短くなりますか?

PPP と PPPP ではなく X と Y (Fの直後に来るものによってSの後に来るべきものがまったく違う場合) には応用可能でしょうか?
0469nobodyさん2009/02/10(火) 00:53:38ID:???
F(tS|fSP)PPP
0470nobodyさん2009/02/23(月) 09:51:32ID:0L52Pp6H
.*?
これの意味を教えて下さい。
0471nobodyさん2009/02/23(月) 10:49:52ID:???
「.」はカニだな
「*」は0匹以上の生息してるやつ最後まで
つまり、「.*」でカニがいるだけ全部を捕り尽くすという意味(昨今の乱獲問題)

そこで捕り尽くしたら絶滅するという問題を受けて「.*?」という思想が考え出された
意味は、最初にカニがいたらその一匹を捕まえて漁を止めるということ
0472nobodyさん2009/02/23(月) 15:41:23ID:0L52Pp6H
>>471
では、 .*? と .? の違いを教えて下さい。
0473nobodyさん2009/02/23(月) 17:58:21ID:???
>>472
「.」はカニだな
「?」は捕れるかとれないか分らないがとりあえず努力するという意味
つまり、「.?」で幻のカニ探索するという意味
0474nobodyさん2009/03/02(月) 19:46:41ID:/g2x4kDh
phpです。
たとえば普通に
http://google.co.jpと書いてあるものと
<a href="http://google.co.jp">test</a>と書いてある文字列があります。

この文字列内のタグになってないUrlをAタグでリンクを張りたいんですがどうしたらいいでしょうか。
0475nobodyさん2009/03/02(月) 21:22:30ID:???
httpから始まり、半角英数字と.?&%が含んでるか見ればおk
0476nobodyさん2009/03/05(木) 18:30:50ID:???
>>471
先生 ノシ
「.*?」で最初の一匹目のカニも取れませんでした。
でも幻のカニは取れたみたいです。
0477nobodyさん2009/03/11(水) 00:46:27ID:???
http://*.2ch.net/*/test/bbs.cgi*
これを正規表現にすると、どうなりますか?
0478nobodyさん2009/03/11(水) 01:27:39ID:???
http://*.2ch.net/*/test/bbs.cgi*
0479nobodyさん2009/03/11(水) 11:15:58ID:???
>>477
"{^https?://[0-9a-zA-Z]*\.2ch\.net/[0-9a-zA-Z]*/test/bbs\.cgi[0-9a-zA-Z/_-]*$}"
0480nobodyさん2009/03/20(金) 02:34:11ID:???
phpのクラスファイルの特定の関数を正規表現で抜き出したいのですが可能でしょうか?

例 class.test.php から public function test($a){ 本文 }

スケルトンコードの場合簡単に抜き出せるのですが、
本文中にif,swichなどで } が存在した場合どうすれば良いのか悩んでいます。
0481nobodyさん2009/03/20(金) 04:11:43ID:???
{が出たら探す}を1つ増やせばいいじゃん
0482nobodyさん2009/03/20(金) 22:15:43ID:???
言語は
BoostライブラリBoost.Xpressiveか、Boost.Regexか、Boost.Spirit
です。(標準C++,コンパイラg++。)

括弧の対応のバランスがとれているならマッチさせるという正規表現はどう書けますか?
boost::xpressive::sregex parens;
parens = *( '(' >> by_ref(parens) >> ')' );
だと
 ()→マッチ
 ()()→マッチ
 ()(()((()))())→マッチ
 (()))))→マッチしない
です。
私としては(1+3)*(4+(8-9))の様に括弧以外の文字が含まれていても括弧のバランスがとれているか判定できるようにしたいのですが。
ただし括弧としては ( か ) だけを想定し、{}[]などは判定の対象にはせず、数式として成り立っているかどうかなども判定せず、あくまで ( と ) のバランスだけを見たいです。

0483nobodyさん2009/03/20(金) 22:25:59ID:???
>>481
できました、ありがとうございました。
こんな感じで、簡単でしたね、、、

 /function test.*?\{.*? (\{.*?\}.*?)*? \}/s
0484nobodyさん2009/03/20(金) 23:13:32ID:???
echo内の { } にも対応してみました。
これでほぼ完璧かなぁ、、、
/public\sfunction\stest_if_text.*?\{.*?(\{.*?("(.*?\{*?.*?|.*?\}*?.*?)*?".*?)*?\}.*?)*?\}/s
0485nobodyさん2009/03/20(金) 23:18:29ID:???
センスねえな
ムダがおおい
0486nobodyさん2009/03/20(金) 23:28:45ID:???
関数名だけで対応すると
/[public|private|protected]+\s+[static]?\s?function\s+関数名.*?\{.*?(\{.*?("(.*?\{*?.*?|.*?\}*?.*?)*?".*?)*?\}.*?)*?\}/s
こんな感じかなw
読みやすさ優先で記述してるからセンスは勘弁してくださいw
0487nobodyさん2009/03/24(火) 08:12:11ID:???
>>482
正規表現だけじゃ無理じゃね?
0488nobodyさん2009/03/24(火) 09:59:04ID:???
>>482
正規表現じゃ数学的に不可能。有限状態オートマトンなので閉じられてない
開きカッコの数を高々状態数までしか憶えられないからそれを越えた時点で
アウト。

Perlの正規表現みたいに再帰的なパターンが書けるように拡張されてると
別だけどね。
04894872009/03/24(火) 10:07:28ID:???
>>482
BoostのXpressiveならby_ref()があるから再帰的に書けないこともないハズ。
でもよーわからん。
Spiritが使えるならそっちのが楽そうじゃね?
0490nobodyさん2009/03/24(火) 10:20:21ID:???
「高々状態数」の意味がわかりません。
0491nobodyさん2009/03/24(火) 10:38:59ID:???
数学じゃよくでてくるけどね、「高々」とか「状態数」とか
0492nobodyさん2009/03/24(火) 10:40:15ID:???
>>491
俺は初めて聞いたぞ。
たかだかはよく出て来るけど(例:たかだかn次の〜)
状態数は物理学の用語じゃね?
0493nobodyさん2009/03/24(火) 12:16:31ID:???
お前ら正規表現スレにいて有限状態オートマトンもわからんのか...
いくらなんでもゆとりすぎるだろ
0494nobodyさん2009/03/25(水) 10:08:36ID:???
文字xが10個以上である場合にマッチさせるのに
x{9}x+
と
x{10}x*
は共に等価でOKだとおもうが、
一般論で言うとどちらが速い動作になる?
0495nobodyさん2009/03/25(水) 10:43:53ID:???
どっちも同じ動作なんだから同じじゃね
それよりももう少し改良できると思うんだがな
0496nobodyさん2009/03/25(水) 12:38:18ID:???
実装次第で一般論ではなんともいえないと思われる。

どっちを食わせても全く同じオートマトンに変換してから実行するの
でぴったり同じになる実装、なんてのもあるかもしれないし、
逆になぜか+が不得意な実装とか*が不得意な実装とかあるかも
しれない。モノによっては{..}が不得意でxを並べたほうがいいと
いうことも考えられるな。
04974942009/03/25(水) 15:11:33ID:???
>>495-496
なるほど。
ありがとう。。。
0498中山2009/03/29(日) 09:39:01ID:MqxV8vA3
PHP 正規表現について

$str = 'test1?test2/test3;test4';

この文字の
test1
test2
test3
test4
を取り出すにはどうしたらよいでしょうか?

この価を
data1=test1&data2=test2&data3=test3&data4=test4
と変換したいです

preg_replaceを使っています
$str = preg_replace("・^([a-zA-Z0-9]+\?+[a-zA-Z0-9]+)\/+[a-zA-Z0-9];+[a-zA-Z0-9)$・","data1=$1&data2=$2&data3=$3&data4=$4",$str));


これではダメみたいです
0499nobodyさん2009/03/29(日) 09:49:02ID:???
どーゆークエリだそりゃ
0500nobodyさん2009/03/29(日) 09:54:22ID:???
$str = 'test1?test2/test3;test4';
この内容がどういうパターンで変動し得るかがわからん
書かれている正規表現見てみると ? / ; の順に区切り文字があることは固定で決まってる?
0501中山2009/03/29(日) 19:51:10ID:MqxV8vA3
はい。固定できまってます。

ただし、

test1
などの文字列は半角英数字限定です。
0502nobodyさん2009/03/31(火) 12:09:46ID:???
>>498
data1,data2,data3・・・きめえwww
0503nobodyさん2009/04/14(火) 19:16:36ID:???
以下のような文字列を置換ですべて削除したいのですが
どうかけばいいのでしょうか

onMouseOver="refPopUp(1,event)" onMouseOut="hidePop()"
onMouseOver="refPopUp(23,event)" onMouseOut="hidePop()"
onMouseOver="refPopUp(345,event)" onMouseOut="hidePop()"
↓
3行すべて削除

試した正規表現
onMouseOver="refPopUp(\d+{1,3}.,event)" onMouseOut="hidePop()"
0504nobodyさん2009/04/14(火) 19:24:30ID:???
3}.,の.ってなによ
0505nobodyさん2009/04/14(火) 19:31:15ID:???
>>504
すまんこ

一応自力解決しました。さくらエディタの正規表現オンで動作確認
onMouseOver="refPopUp\(\d{1,3},event\)" onMouseOut="hidePop\(\)"
0506nobodyさん2009/04/14(火) 20:09:33ID:???
下記の2文にあるfontタグを消したいです。
正規表現を用いた1度の置換で消せますか?

<dd><font style="font-size:;color:;"> テスト <br> テスト </font><br><br></dd>
<dd><font style="font-size:;color:;"> テスト2 <br> テスト2 </font><br><br></dd>


考え方として
<dd><font style="font-size:;color:;">がある行のうち</font>を削除し、そのあと<font style="font-size:;color:;">を削除
これで行けそうかと思ったのですが、●●がある行のうち○○を削除、という正規表現がわかりませんでした・・・
0507nobodyさん2009/04/16(木) 23:48:40ID:???
>>506

(.*)<font style="font-size:;color:;">(.*)<\/font>(.*)
$1$2$3
とすればいいんじゃない。
どこの正規表現を使うかによりできないかもしれないけど。

$nはn番目の括弧に該当するから<font style="font-size:;color:;">と</font>が消える。
<font></font>がネスとしているなど複数あったら駄目かもしれないけど。
0508nobodyさん2009/04/17(金) 04:08:26ID:???
>>507
サクラエディタで正常に動作することを確認しました。
ありがとうございます!
0509nobodyさん2009/04/25(土) 21:30:02ID:???
 ヽ('A`)ノ  ○○表現!
  (  ) 
  ノω|
0510nobodyさん2009/04/29(水) 05:47:07ID:???
チカンしまくり
0511nobodyさん2009/05/12(火) 06:32:22ID:???
12?34
12??34

違いが出るときはどんなときか答えなさい
0512nobodyさん2009/05/18(月) 16:49:08ID:???
$txt = aaa(’12165;

のような、固定文字列aaaの後ろに『(’nnnnn;』(nの部分は必ず半角数字で値と文字数は可変。’は全角)となる箇所がうじゃうじゃあり、
この文字列の数字を挟んでいる記号だけを全て削除したいのですが、しっくりくる正規表現が浮かびません
妙案ないでしょうか

php5 or 4
0513nobodyさん2009/05/18(月) 22:40:33ID:???
aaaの後ろにうじゃうじゃって
$txt = aaa(’12165;
$txt = aaa(’5445;
$txt = aba(’13;
$txt = aaa(’99999;
こうなんか?

結果 = preg_replace('/’(\d+);/', '$1', 入力);

結果
$txt = 12165
$txt = 5445
$txt = aba(’13;
$txt = 99999

0514nobodyさん2009/05/21(木) 08:03:14ID:bdo2M1uu
すみません、質問させてください。

曲名のリストを一括置換しようとしています。具体的には"〜 by"が
入る丸括弧だけ四角括弧"[ ]"に置き換えたいのです。

例
This is me (talk) (Composed by Johan)
↓
This is me (talk) [Composed by Johan]

どのような書式にすればいいかご教示お願いします。
0515nobodyさん2009/05/21(木) 08:25:36ID:???
正規表現と一言に言ってもね、正規表現にもいろいろあってね、どの正規表現かで
書き方も全然違ってくるからね、その質問だけじゃなんとも言えないのね。

初心者用のサイトにいってらっしゃいなのね。

図解でみる正規表現入門
http://funcchan.blog16.fc2.com/
0516nobodyさん2009/05/21(木) 08:34:21ID:???
$s= "This is me (talk) (Composed by Johan)";
$s=~ s/\(([^\)]*\bby\b[^\)]*)\)/[$1]/gi;
0517nobodyさん2009/05/21(木) 09:43:06ID:???
>>515-516
ありがとうございます。

STEPというタグエディタで100曲ほど一括置換しようと
目論んでます。

教えていただいたサイトとスクリプトを手がかりに
現在悪戦苦闘中です。ちょっと頑張ってみます。
0518nobodyさん2009/05/23(土) 22:18:11ID:???
こういうときにこまるわけか

special days(arranged by hor version.) (Composed by Ellic)

0519nobodyさん2009/05/27(水) 00:18:24ID:???
質問させて下さい。

ABC
…LMNO………
……LMNO……
………LMNO…
XYZ

というような文章があったとします。
「LMNO」の前後(「…」)には文字(日本語や英数字)があります。

Perl5互換の正規表現が使えるテキストエディタや、BREGEXP.DLLが使える置換えソフトを使用し、
「ABC」から「XYZ」までにある「LMNO」を「OOOO」に置換えすることは可能でしょうか?
特定の範囲内の文字だけを置換えする正規表現がわからず、検索文字列と置換え文字列の指定で困っています。
どのようにすれば良いのか教えて頂けると助かります。よろしくお願いします。
0520nobodyさん2009/05/27(水) 22:50:49ID:???
s/(ABC.*)LMNO(.*XYZ)/$1OOOO$2/g
ってことか?
05215192009/05/29(金) 23:05:57ID:???
>>520
具体的な指定を教えて頂いてありがとうございました。
早速試したのですが置換えできませんでした。
「Speeeeed」という置換えソフトではBREGEXP.DLLも使えるのですが、それでも置換え結果がゼロのままです。
こちらのスレをもう一度読み返してもっと正規表現を勉強したいと思います。
0522nobodyさん2009/06/07(日) 21:54:50ID:???
s/(?>ABC)(.*)LMNO(.*)(?<=XYZ)/${1}0000$2/
これを何回もかけるとか?
なんか知らんけどgオプションつけても無駄だったんだよなぁ
0523nobodyさん2009/06/11(木) 09:11:23ID:???
>>521
>>520にsパターン修飾子つけて再帰させるしかねーよ
0524nobodyさん2009/06/12(金) 11:14:20ID:???
sed でも使えばー?
0525nobodyさん2009/06/13(土) 23:07:31ID:56/XckFT
Perlの正規表現で質問させて下さい。
yyyy/mm/entry-basename/index.php
↑はどのように記述すればいいのか、お手数ですがご教授願います<(_ _)>
0526nobodyさん2009/06/14(日) 09:14:31ID:???
正規表現で表すには前提条件がないと答えられない
yyyy部分が4桁数字の西暦?
mm部分が2桁数字の月(ゼロサプレス)?

m#^\d{4}/\d\d/entry-basename/index\.php$#
05275252009/06/14(日) 17:21:47ID:Ycy68Wtw
>>526さん解凍有り難う御座います。
素人で質問が下手くそで申し訳有りません
↓の場合だと
"/diary/archives/yyyy/mm/entry_basename.php"
"/^\/diary\/archives\/\d{4}\/\d{2}\/(\w+)\.php/"
↑のように置き換えるみたいなのですが、

同様に↓の場合だと
"yyyy/mm/entry-basename/index.php"
どのように置き換えるのかが分からなくて、お手数ですがご教授下さい。

分かりにくくて申し訳ないです。
0528nobodyさん2009/06/14(日) 21:15:28ID:???
ちなみにゼロで桁を埋めるのは「ゼロパディング」ね。


> ↑のように置き換えるみたいなのですが、

「置き換える」って、いわゆる正規表現による置換処理の意味じゃなくて
「検索表現に翻訳する」って意味なのか。凄まじく紛らわしい。

さておき…、
で、どの単語が可変部分なのかがさっぱり分かんないんだよね。
"index.php" は固定なの?

それと、上の置き換え例では "entry_basename" になっているけど
お尋ねの件は "entry-basename" だよね。単なる typo かな?
"\w" を使う上では、検索対象文字列の "_" と "-" との違いは本質的だよ。

要するに、質問するにしては不備が多過ぎます。
05295252009/06/14(日) 23:33:00ID:Ycy68Wtw
>>525です

「検索表現に翻訳する」という意味です。失礼しました
そして"index.php"は固定で、"entry-basename"が正解です。

http://www.magicvox.net/archive/2005/05261744/
ここのページにあるランキングが利用したいのですが、
「ランキング集計したいファイル名にマッチするよう Perl の正規表現
を修正してください。」

ここの意味が分からなくて困っています。他のサイトなどを見てみると、
当方の個別エントリーパスは"/diary/archives/yyyy/mm/entry_basename.php"なわけですので、
"/^\/diary\/archives\/\d{4}\/\d{2}\/(\w+)\.php/"としました。
とあります。

私の場合、エントリーパスは"yyyy/mm/entry-basename/index.php"です。
これを"/^\/diary\/archives\/\d{4}\/\d{2}\/(\w+)\.php/"のように記述
するにはどうすればいいのでしょうか?

長文失礼しました。
0530nobodyさん2009/06/15(月) 00:03:48ID:???
'/\d{4}\/\d{2}\/(\w+)\/index\.php/'

謎すぎるけど PHP の preg 使って entry_basename を $1 に入れるんだと
思い込んでみた
0531nobodyさん2009/06/15(月) 00:06:02ID:???
で、その "entry-basename" ってのはその文字列そのものではなくて
「ここにいろんな文字列が入ります」っつーダミーなんだろうけど、
どういった文字で構成されるの?
0532nobodyさん2009/07/05(日) 16:07:10ID:???
perlでテキストデータ内の日付部分を、
2009/1/1
↓
2009/01/01
に一行で置換したいのですが。
s|/([0-9][^0-9])|/0$1|gm;
だと、2回同じ処理が必要になってしまいます。
いい方法ありますか?
0533nobodyさん2009/07/05(日) 16:12:40ID:???
splitとsprintf
0534nobodyさん2009/07/05(日) 17:05:36ID:???
>>532
後ろの1文字ってマッチする?
マッチするなら
1 while $str =~ s|/([0-9][^0-9])|/0$1|gm;
でいけるんじゃない
0535nobodyさん2009/07/05(日) 17:40:16ID:???
m はなくてもよさそうに見える
0536nobodyさん2009/07/05(日) 18:26:28ID:???
>>534
できました。ありがとうございます!

>>535
おっしゃる通りでした。
0537nobodyさん2009/07/05(日) 18:27:53ID:???
たぶんgもいらないよ
0538nobodyさん2009/07/08(水) 01:27:46ID:???
$str =~ s{/([0-9])(?![0-9])}{/0$1}g;
0539nobodyさん2009/07/15(水) 09:40:19ID:???
秀丸で、CSSの : までの部分を強調表示したいのですが、
どう表現すればいいのでしょうか。
以下の例だと、font-size:の部分です。

h1 {
font-size: 150% !important;
}
0540nobodyさん2009/07/15(水) 13:56:52ID:???
>>539
CSSに数字って出るんだっけ?
[\-a-za-z0-9]+[ \t]*:
0541nobodyさん2009/07/15(水) 14:47:39ID:???
ありがとうございます。
見やすくなりました!
:first-childや:notのセレクタで誤爆していたので

[\-a-za-z0-9]+[ \t]*:(?!\first|last|not)

としました。

また以下のようなものだと誤爆するみたいですが
これはほとんど使わないので目をつむろうと思いますw

BODY[style="width: 100%; height: 100%;"] {
font-size: 150% !important;
}
0542nobodyさん2009/07/15(水) 15:14:34ID:???
良く考えたらもっと一杯あった
[\-a-za-z0-9]+[ \t]*:(?!first|last|not|hover|focas|active|visited|link|lang|after|before)
0543nobodyさん2009/07/15(水) 23:25:43ID:2a7dmfqp
/(^-^;)/w(^o^)vv(-_-;)vv[^-^](^_^;)/
0544nobodyさん2009/07/22(水) 16:01:40ID:???
すみません質問させてください。
正規表現初心者です。
秀丸で、正規表現を使って文字列の置換をしようとしています。

例)
abcd,efag),

これを最初の[,]だけを[',]に置換したいと思っています。

検索文字列: [^)],
置換文字列: ',
とすると、

abc',efag),

のように文字列の後ろの1文字まで消えてしまいます。
文字列が消えないように、最後尾でない[,]だけを置換するにはどのように指定すればいいでしょうか。
教えてください。
0545nobodyさん2009/07/24(金) 05:32:15ID:???
秀丸でサポートされている正規表現の機能がどれだけのものか分からんからなあ。

候補 1(質問者の方針参考)
検索文字列: ([^)]),
置換文字列: $1',

候補 2
検索文字列: ,(?!$)
置換文字列: ',

無理なら一旦「,\n」を「,」を含まない別の適当な文字列に変換して、
全ての「,」を「',」に変換してから元に戻すとか。
■ このスレッドは過去ログ倉庫に格納されています