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


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

正規表現道場



1 名前:nobodyさん [2007/01/11(木) 02:40:43 ID:uW7xEbZY]
【正規表現道場の掟】

・言語不問

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

正規表現と関係ない話・質問は他スレへどうぞ。

580 名前:578 mailto:sage [2009/10/15(木) 13:37:10 ID:???]
試行錯誤した結果、以下でいけそうな感じだけど、どうだろう?

$str =~ s/((?:<|\G)[^<>]*?)abc(?=[^<>]*>)/\1def/g;


581 名前:nobodyさん mailto:sage [2009/10/15(木) 13:51:05 ID:???]
utf-8の文字コード内にない文字を探すにはどんな感じにすればいいんでしょうか?
javascriptです。


582 名前:nobodyさん mailto:sage [2009/10/15(木) 20:38:57 ID:???]
>>568
Perlだったら。
s/<(.*?)>/(my $s = $1) =~ s{abc}{def}g; "<$s>"/ges;

エディタのマクロでやるのがいいかなと思うけど、ちょっと面倒。

583 名前:nobodyさん [2009/10/19(月) 23:25:42 ID:/Zspq1xO]
PHPでとあるファイルを読み込んで、読み込んだファイルの中に下記の記述
があれば正規表現(preg_replace等)で空白に置き換えたいと考えています。
正規表現で正規表現を消す記述の仕方がわかりませんorz
どのような正規表現を記載すればよいでしょうか。
すみませんがお分かりになられる方が居られましたらご教授よろしくお願いいたします。


↓↓↓消したい記述その1↓↓↓
if ( /^(To|Cc): admin@admin\.com$/:h || /^(To|Cc): .*\<admin@admin\.com\>/:h )
{
cc \"| /usr/bin/nextbb -c ISO-2022-JP -s 'xxxxx' -A 'From:yyyyy <admin@admin.com>' -t
/home/sendmail -t\"
}


↓↓↓消したい記述その2↓↓↓
/^[a-zA-Z0-9\-\.\/\[\]\(\)\{\}\|@`:<>,!?\"'#\$%&*+;\\=^_~ ]*?$/"




584 名前:nobodyさん mailto:sage [2009/10/19(月) 23:36:46 ID:???]
Linuxコマンドが入力されるインプットボックスの入力チェック処理を
正規表現でやりたいのですが、どのようなチェックを行えばいいでしょうか?

585 名前:nobodyさん mailto:sage [2009/10/20(火) 09:19:58 ID:???]
それはキミがどのような入力を許可したいかがわからないから答えようがない

586 名前:nobodyさん mailto:sage [2009/10/23(金) 15:06:47 ID:???]
それを聞いているんじゃないのか

587 名前:nobodyさん mailto:sage [2009/10/23(金) 17:07:26 ID:???]
Linuxコマンドとか、インプットボックスって何?

588 名前:nobodyさん mailto:sage [2009/10/24(土) 13:30:39 ID:???]
<input>で何か入れてsubmitすると、それが実行されるのか?
なんか巧妙にうまくごまかして危険なコマンド実行されそうだな。

正直俺の知識では知らん。
どんなコマンドも受け付けたくないな。
そもそもコマンドによってチェック内容は変わるんじゃないの?



589 名前:nobodyさん mailto:sage [2009/10/24(土) 18:23:59 ID:???]
<input name="cmd" type="text" value="rm -rf ." />

590 名前:nobodyさん mailto:sage [2009/10/25(日) 08:12:45 ID:???]
>>584
俺はこれからどのように生きていけばいいでしょうか?
くらいに漠然とした質問だなこりゃ。

構文的に shell が受理可能かどうかなら Perl なら shellwords.pl 使うとかな。

591 名前:nobodyさん mailto:sage [2009/12/09(水) 19:11:48 ID:???]
まだ正規表現が素人なので教えてください。
たとえば以下のように四行の文章があって
それら文章の最初(一番目)の空白文字だけを検索するには
どうすればいいのですか?

The environment of contents industries is so drastically changing,
though Japan has not fully.
taken advantage of the changes to develop.
its presence in the global market.

The とenvironmentの間の空白文字 、though と Japanの間
taken とadvantage の間の空白文などなどです

592 名前:nobodyさん mailto:sage [2009/12/09(水) 21:08:56 ID:???]
Perlで関数の括弧をドンドン入れ子にしていく正規表現書いてるだけと
(\([^()]*(((\([^()]*\)[^()]*))*\)[^()]*)*)*\)
↑これに穴は無いよな!?
どんなに入れ子にしても、エラーはでないかな
初めて作った正規表現なんだが。ご指南、よろ

593 名前:nobodyさん [2009/12/20(日) 20:33:27 ID:fe9ijwb+]
0*(\d+)

これの意味を教えてください

()の中はわかるのですが前がよくわかりません

594 名前:nobodyさん mailto:sage [2009/12/20(日) 20:38:26 ID:???]
数字の並びから先頭の0を取り除いてる

595 名前:nobodyさん [2009/12/20(日) 20:44:43 ID:fe9ijwb+]
なるほど
00200 とかの前の0を無視して検索できるという感じですか

596 名前:nobodyさん mailto:sage [2009/12/21(月) 08:18:48 ID:???]
>> 0*(\d+)
0が0個以上並んだ後に、0〜9が1個以上並ぶ。

597 名前:nobodyさん mailto:sage [2009/12/21(月) 20:42:38 ID:???]
>>592
見てないけど無理
(??{})あたり使えばいける

598 名前:nobodyさん [2009/12/23(水) 22:25:52 ID:Hajqsr0G]
HTMLタグの <ul> <li> について、入れ子構造になっていた場合も考慮しつつ Pukiwiki等の記法に変換しようと考えています

<ul>
  <li>1行目@1段目
  <li>2行目@1段目
  <ul>
    <li>3行目@2段目
    <li>4行目@2段目
  </ul>
  <li>5行目@1段目
</ul>

これを

- 1行目@1段目
- 2行目@1段目
-- 3行目@2段目
-- 4行目@2段目
- 5行目@1段目

こんな感じにしようと四苦八苦しているのですがどうにも難しく…
ヒントだけでも良いのでアドバイスをお願いします。

今は、<ul>が存在する限り
<ul>( <ul>以外 )<\/ul> を抜き出して
その中を /<li>(.*?)<\/li>/s で置き換えて、抜き出し元と差し替えて
最初に見つかった<ul>(.*?)<\/ul>について <ul> と </ul>を削除、と考えていますが
最初の <ul>以外 の時点で既につまづいている始末です。



599 名前:nobodyさん mailto:sage [2009/12/23(水) 23:13:19 ID:???]
$head= '';
$s=~ s/(<ul>)\s*|(<\/ul>)\s*|<li>(.*)(?:<\/li>)?\s*/$1?scalar($head.='-',''):$2?scalar(($head=substr($head,1)),''):"$head $3\n"/gei;
print $s;

600 名前:nobodyさん [2009/12/29(火) 00:08:08 ID:F3P1tBWB]
文字列の中にある¥を除去したかったのですが、preg_replace('/¥/')や
preg_replace('/¥¥/')では削除できなかったのですが、preg_replace('/¥¥¥/')だと削除できました・・・
これはなぜでしょうか。
¥は次に有る文字をエスケープするわけですから、preg_replace('/¥¥/')でいけそうな気がするのですが。。。
正規表現初心者につき、低レベルですがご教授よろしくお願いいたします。
(上記は、あえて半角ではなく、全角の¥で説明しています。)



601 名前:nobodyさん mailto:sage [2009/12/29(火) 12:06:00 ID:???]
やりたいこと自体はstr_replaceでできるだろうけどphpの正規表現がなんかおかしいな。
perlならそれで通るはずだけど。

602 名前:nobodyさん mailto:sage [2009/12/29(火) 12:38:00 ID:???]
文字列としてのエスケープと正規表現としてのエスケープは別。
'/\\/' は /\/ '/\\\/' は  /\\/ '/\\\\/' も /\\/  



603 名前:600 [2009/12/29(火) 22:52:30 ID:F3P1tBWB]
>>601-602
なるほど!!
そういうことでしたか。
ありがとうございます!

604 名前:nobodyさん mailto:sage [2009/12/30(水) 09:01:55 ID:???]
ああそうか、phpだとシングルクオートで囲んでも\はエスケープに解釈されるのか。

605 名前:nobodyさん mailto:sage [2010/01/24(日) 19:36:14 ID:???]
<a href="test.php?id=0001">あいうえお</a>
<div class="id">0001</div>
<div class="time">20100101010101</div>
<div class="name">なまえ</div>
<div class="body">コメント</div>

上記のタグがあったとして、
preg_match_all("/<a href=\"test.php\?id=0001\">(.*)/<\/div>\" style=\"display: none;\">/", $hoge, $data);
のように書くと、指定したIDのaタグ内の文字がとれるのですが、その下の<div class="id">から<div class="body">の後の</div>までのタグ、
もしくはそのタグ内の文字列を抽出したいのですがうまくいきません。
それぞれのタグは1行でつながってるものとして、複数タグの範囲内を取るのは可能なのでしょうか?



606 名前:nobodyさん mailto:sage [2010/01/24(日) 20:12:18 ID:???]
複数ならpreg_match_all()使うけど一つならpreg_match()で以下のように

preg_match('/\bid=(\d+)[^>]+>([^<]*)<\/a>.*?"id">\1<.*?"time">(\d+)<.*?"name">([^<]*)<.*?"body">([^<]*)</is', $s, $match);

607 名前:nobodyさん mailto:sage [2010/01/24(日) 21:01:02 ID:???]
有難うございます。
IDが0001以外のコメントもひろっちゃっていますが、かなり希望するのに近づいてきました。

もう少し細かく書くべきでしたが、複数のIDがあり、同じIDでのコメントも複数あった場合です。
上記のタグが一つのセットとして、いくつかある中の
<a href="test.php?id=0001">あいうえお</a>のタグとコメント部分をまとめて表示させたいと思っています。
id=の部分を改変して直接0001を指定したらだめだった・・・

608 名前:nobodyさん mailto:sage [2010/01/25(月) 01:28:52 ID:???]
試行錯誤したらなんとか希望通りのものができました。
正規表現だけに囚われててプログラムがよろしくなかった…



609 名前:nobodyさん mailto:sage [2010/02/03(水) 12:34:08 ID:???]
先生質問です
Rewriteで動的URLを静的URLにしたいのです

やりたいことは6つのクエリを書き換えたいのですが
6つのうち1つのとき、2つのとき、・・・6つのときというように組み合わせがかなりの数になってしまうと思うのですが

順列で 6P1 + 6P2 + 6P3 + 6P4 + 6P5 + 6P6 と考えてよいのでしょうか?

6つも書き換えなんてやっぱ無理でしょうか?

610 名前:nobodyさん mailto:sage [2010/02/03(水) 13:22:42 ID:???]
ちょw

611 名前:nobodyさん mailto:sage [2010/03/02(火) 21:59:18 ID:???]
 

612 名前:nobodyさん mailto:sage [2010/03/02(火) 22:11:34 ID:???]
test

613 名前:nobodyさん mailto:sage [2010/03/08(月) 15:33:08 ID:???]
MySQLダンプ内の

/*------------------ここから--------------------*/
DROP TABLE IF EXISTS `table100`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `table100` (
`code1` varchar(5) default NULL,
`zip1` varchar(7) default NULL,
`address1` varchar(250) default NULL,
`address2` varchar(250) default NULL,
`div_1` varchar(1) default NULL,
`div_2` varchar(1) default NULL,
`import_date` timestamp NULL default NULL,
`rec_key1` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`rec_key1`)
) ENGINE=InnoDB AUTO_INCREMENT=121471 DEFAULT CHARSET=eucjpms;
/*!40101 SET character_set_client = @saved_cs_client */;
/*------------------ここまで--------------------*/

`table100` → `TABLE100`
`code1` → `CODE1`
など逆クォートで囲まれた小文字→大文字変換を一括で行いたいです。。
できればlinux コマンドライン、perl などでお願いします。。


614 名前:nobodyさん mailto:sage [2010/03/08(月) 18:01:54 ID:???]
たぶんs/`(\w+)`/`\U$1`/g

615 名前:nobodyさん mailto:sage [2010/04/11(日) 00:10:39 ID:???]
eregで半角記号のみをマッチさせてfalseを返す処理を組んでいるのですが、
何故か一部の漢字が引っ掛かってしまいます…確認した所では夕焼けの「夕」の
文字などです。

if(ereg ("[[:punct:]]",$_POST['名前']))

こんな感じです。今までは普通に機能していたんですが…
どなたかアドバイス頂けないでしょうか?

616 名前:nobodyさん mailto:sage [2010/04/11(日) 02:49:42 ID:???]
>>615
ereg って多バイト文字に対応してないんじゃないか?


617 名前:nobodyさん mailto:sage [2010/04/12(月) 09:23:26 ID:???]
eregはPHP5.3.0から非推奨になってるので新しく書くプログラムでは
使わないほうがいいよ。perl互換正規表現(PCRE)をお使いください。

618 名前:nobodyさん mailto:sage [2010/05/02(日) 00:32:33 ID:???]
:wink:, :lol:, :cry:, :evil:, :twisted:, :roll:, :idea:, :arrow:, :mrgreen:, :),
:-(, :!:, :?:, :oops:, :-o,:-D,8-|,8-), :??, :x:, :-P, :ase:, =:[, :ahhh:,
:star0.0:, :star0.0:, :star0.5:, :star1.0:, :!!!:, :**:,
:heart:, :!!:, :hahaha:, :chin:, :[], :|

こんな感じのスマイリーコードをマッチさせるのに、
$string = '{[:\*8=][(^:|*|a-zA-Z\-!?_\.\d\[)]*[(.*:)(.*\*)(.?)(:*[)(\])PoD\|]};
こんな感じのコードにしてみたけど、もっとスマートに出来ますか?

しかし、正規表現はパズルみたいで面白いね。



619 名前:nobodyさん mailto:sage [2010/05/02(日) 04:08:13 ID:???]
>>618
スマートさではこっちのが上だね :P
(:(wink|lol|cry|evil|twisted|roll|idea|arrow|mrgreen|\!|\?|oops|x|ase|ahhh|star0.0|star0.5|star1.0|\!\!\!|\*\*|heart|\!\!|hahaha|chin):)
|(:)|:-(|:-o|:-D|8-\||8-)|:??|:-P|=:[|:[]|:\|)

620 名前:nobodyさん mailto:sage [2010/05/02(日) 04:53:21 ID:???]
>>619
色々バグってた

my @g = $str =~ /(
(?: \:
(?: ahhh | arrow | ase | chin | cry | evil | hahaha | heart | idea | lol | mrgreen | oops | roll | star0\.0 | star0\.0 | star0\.5 | star1\.0 | twisted | wink | x | \!\!\! | \!\! | \! | \*\* | \? )
\:)
|
(?: \:-\) | \:\-\( | \:\-D | \:\-P | \:\-o | \:\?\? | \:\[\] | 8\-\| | 8\-\) | \=\:\[ )
)/gx;

621 名前:nobodyさん mailto:sage [2010/05/02(日) 10:16:16 ID:???]
>>618のだと:aaaaa:とか存在しないものまでマッチしちゃうよ?

((?:\:(?:(?:ahhh|arrow|ase|chin|cry|evil|hahaha|heart|idea|lol|mrgreen|oops|roll|star(?:0\.[05]|1\.0)|twisted|wink|x|\!{1,3}|\*{2})\:|\?[:?]|(?:\)|\[\]|\||\-[(oDP])))|(?:8\-[|)])|=\:\[)

622 名前:nobodyさん mailto:sage [2010/05/02(日) 11:44:31 ID:???]
>>619-621
そうか、未来の拡張を考えて緩くしたけど、
2バイト文字以外のブログじゃ広くマッチしすぎるって事か。。。
それじゃスマイリーコードの方に厳格なルールを...
なんって考えるのもユーザーに優しくないし。
折り合いつけるの難しいね :|



623 名前:nobodyさん mailto:sage [2010/05/02(日) 19:52:37 ID:???]
>>622
厳格さが必要でない処理が行われるというのがイメージできんのだけど、
マッチさせてどうしたいんだ?

624 名前:nobodyさん mailto:sage [2010/05/02(日) 20:21:19 ID:???]
>>623
とあるCMSで、
引用表示の時は、リンクとか画像とか取っ払う追加プログラム書いてるから。

625 名前:nobodyさん mailto:sage [2010/05/02(日) 22:35:26 ID:???]
>>624
文から推測すると、前提として普通の記事の場合はスマイリーコードとやらが画像に変換されるということがあって、
その記事が引用されてる場合はそれらを除去したいということか?

前提が正しいならスマイリーコードを画像に変換する時に使ってるルールを厳格に使うべきだし、
正しくないならリンクでも画像でもないスマイリーコードを除去する必要がないと思うんだが

626 名前:nobodyさん mailto:sage [2010/05/02(日) 23:09:45 ID:???]
>>625
正解です。
通常記事ではスマイリーコードが画像に変換されます。
で、引用時には、それら(改行,スペース,タブ,画像,リンク等)を除去して
コンパクトにしたいのです。

引用文にスマイリーが入ってもいいんですが、
記事を丸める過程で<img>タグが邪魔したので、除去するを仕様としました。


627 名前:nobodyさん mailto:sage [2010/05/03(月) 00:05:08 ID:???]
>>626
一度img要素に置換したものをベースにするというのがそもそもおかしいのでは?
もしかして表示する直前に置換してるんじゃなくて、DBに突っ込む段階で置換しちゃってるとか?
それだったら設計を見直したほうがいいと思うんだけど

628 名前:nobodyさん mailto:sage [2010/05/03(月) 00:07:04 ID:???]
>>626
じゃあやっぱり >スマイリーコードを画像に変換する時に使ってるルールを厳格に使う が一番スマートなんじゃないか
それができないなら一旦引用されていない記事として処理して、そこからimgタグを除去するとか

正規表現の話からはだいぶそれたので俺はこれ以上何も言わないことにするよ :P



629 名前:nobodyさん mailto:sage [2010/05/03(月) 00:36:11 ID:???]
>>627-628
スマイリーコードが置換されるのはDBから引っ張ってからですが、
追加プログラムの導入IDによって優先順位があるので単純ではないんです。。。

で、私も正規表現から脱線しすぎなのでこれが最後。

脱線ついでに、タイムズスクウェアで爆発物を積んでた車って。。。
家の車も正規表現でマッチしちゃうwww


630 名前:nobodyさん [2010/05/19(水) 16:47:15 ID:t/z/xcK5]
質問させてください!

ああああああ @ ABCD @ abcd

という文字を

<b>ああああああ</b> @ ABCD @ <em>abcd</em>

のように置換したい時はどういう正規表現を使えばいいのでしょうか?

よろしくお願いいたします

631 名前:nobodyさん mailto:sage [2010/05/19(水) 17:44:20 ID:???]
その例にするための条件って何?
スペース @ スペース が区切りとか?

632 名前:nobodyさん [2010/05/20(木) 19:43:15 ID:avs5qFDL]
質問させてください。

<table>
<tr>
<th>名称1</th>
<td>
値1
</td>
</tr>
<tr>
<th>名称2</th>
<td>
値2
</td>
</tr>
</table>
のようなHTMLがあります。
実際には全ての改行とインデントはトリムされてます。
この値1の部分をとるにはどのような正規表現を使えば良いでしょうか?

<th>名称1</th><td>([^<]*)</td>
のように考えてましたが値1には<img>タグが入る場合があります。
<table>や<td>が入ることはありません。


633 名前:632 mailto:sage [2010/05/20(木) 19:44:24 ID:???]
途中で投稿してしまいました。

お手数ですがご教授よろしくお願いします。
なお、当方18歳女子になります。

634 名前:nobodyさん mailto:sage [2010/05/20(木) 19:54:06 ID:???]
<th>名称1</th><td>(.*?)</td>

635 名前:nobodyさん [2010/05/20(木) 20:40:36 ID:a5arSWsA]
www19.atpages.jp/imagelinkget/get.php?t=v&u=www.phpbook.jp/regexp/ini/img/p1-1.png
ukiya.sakura.ne.jp/index.php?plugin=ref&amp;page=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E8%AC%9B%E5%BA%A7%2F1&amp;src=regex1.png
ukiya.sakura.ne.jp/index.php?plugin=ref&amp;page=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E8%AC%9B%E5%BA%A7%2F8&amp;src=regex8.png


636 名前:nobodyさん mailto:sage [2010/05/20(木) 21:13:11 ID:???]
<th>名称1</th><td>(値1|<img>)</td>

637 名前:632 [2010/05/21(金) 22:05:20 ID:E8tDrX2s]
ありがとうございました。
無事に解決できました。
これより踊りに行くのでこれにて失礼致します。

638 名前:nobodyさん mailto:sage [2010/05/24(月) 12:25:48 ID:???]
便乗だけど
<table>
<tr>
<th>名称1</th>
<td class="abc">
値1
</td>
</tr>
<tr>
<th>名称2</th>
<td class="def">
値2
</td>
</tr>
...あと何個か続く

この場合 <th>名称1</th><td .*>(.*?)</td> にしたのですが
何故かうまく 値1 だけ取得できません
どうも .*で余計なものも取得しているようです
どう書けばいいでしょうか
当方JKです。





639 名前:nobodyさん mailto:sage [2010/05/24(月) 14:40:31 ID:???]
<th>名称1</th><td .*?>(.*?)</td>

640 名前:nobodyさん mailto:sage [2010/06/10(木) 09:40:35 ID:???]
現在、HTMLのimgタグを使って「/img/jpg/」ディレクトリにある画像ファイルを複数表示しています。

例)
<img src="/img/jpg/1111.jpg" >
<img src="/img/jpg/mm2222.jpg" >
<img src="/img/jpg/kkkkk3333.jpg" >

これをそれぞれ、以下のように置換したいと考えています。
例)
<a href="www.xxxxx.jp/1111.jpg"><img src="/img/jpg/1111.jpg" width="240px"></a>
<a href="www.xxxxx.jp/mm2222.jpg"><img src="/img/jpg/mm2222.jpg" width="240px"></a>
<a href="www.xxxxx.jp/kkkkk3333.jpg"><img src="/img/jpg/kkkkk3333.jpg" width="240px"></a>

imgタグをリンクタグで囲むのですが、リンク先URLには元々の画像ファイル名が使われています。また、imgタグには「width="240px"」が付加されています。

このような置換をPHP5で行うには、どのような正規表現を使用したらよろしいでしょうか。
宜しくお願い致します。

641 名前:nobodyさん mailto:sage [2010/06/10(木) 16:43:49 ID:???]
素人です。

s/<img src="\/img\/jpg\/(.+)\.jpg" >/<a href="http:\/\/www\.xxxxx\.jp\/\1\.jpg"><img src="\/img\/jpg\/\1\.jpg" width="240px"><\/a>/;

こんな感じになるのかと思いますがどうでしょうか?

642 名前:nobodyさん [2010/07/01(木) 16:19:28 ID:qVVuQ4W9]
Perl 5.8 /5.10で使用します。

HTMLソースの中のimgタグのファイル名を正規表現などで一括で変えたいです。

<img src="www.hoge.com/aaa/bb/ccc/ddd.jpg" alt="sss">
<img src="/xxx/yyy.png">
<img src="../aaa/fff/xxx/ccc.gif" width="32" height="16">

           ↓

<img src="/images/ddd.jpg" alt="sss">
<img src="/images/yyy.png">
<img src="/images/ccc.gif" width="32" height="16">

こんな感じです。どの様にしたらよいでしょうか。

643 名前:nobodyさん mailto:sage [2010/07/01(木) 17:11:08 ID:???]
>>642
s|(<img[^>]* src=")[^"]*/([^/"]+"[^>]*>)|$1/images/$2|ig

644 名前:nobodyさん [2010/09/13(月) 00:25:36 ID:BUnMGSIw]
php5.3です。
%でかこまれた(%test%)文字をpreg_matchでヒットさせたいんですが、どういう文字列にすればいいんでしょうか?
ちなみに、'/%%([^%])%%/'ではだめでした。



645 名前:nobodyさん mailto:sage [2010/09/13(月) 00:27:10 ID:???]
間違えた。
'/%%([^%]*)%%/'です。

646 名前:nobodyさん mailto:sage [2010/09/13(月) 00:33:05 ID:???]
%%test%% と書かれてたら %test% がキャプチャするようにしたいのか
%test% と書かれてたら test をキャプチャするのかどっち?

後者だと勝手に決め付ける。'/%([^%]+)%/'

647 名前:nobodyさん mailto:sage [2010/09/23(木) 15:56:42 ID:???]
find . -type f -iregex ".*[^html|htm|gif|jpg|jpeg|png|css|js|swf|xml]" -print

でウェブ関連以外のファイルを抜き出しいのだけれど、
なぜか在るはずの【*.pdf】が出てきません・・・。
書き方が不味いのでしょうか。


648 名前:nobodyさん mailto:sage [2010/09/24(金) 17:04:12 ID:???]
[^html|htm|gif|jpg|jpeg|png|css|js|swf|xml] = [^cefghijlmnpstwx|]



649 名前:647 mailto:sage [2010/09/24(金) 20:33:46 ID:???]
>648

find . -type f ! \( -name \*.html -o -name \*.htm -o -name \*.css -o -name \*.js -o -name \*.gif -o -name \*.jpg -o -name \*.png -o -name \*.swf -o -name \*.xml -o -name \*.pdf \) -print

を、-iregex使って短くするにはどう書けばいいんのでしょうか。

650 名前:nobodyさん [2010/09/26(日) 06:42:01 ID:JLVe9rj0]
Firebugで"aaaaaaaaaaaaaaaaaaaa".match(/(a)/)とすると2つしかヒットしないんですが、
全部のaをヒットさせるにはどうしたらいいんでしょうか?

651 名前:nobodyさん mailto:sage [2010/09/26(日) 22:12:08 ID:???]
>>650
コールバック使うときは1つめの引数は全体だよ
"aaaaaaaaaaaaaa".match(/(a)/g);
これでいいと思う

652 名前:nobodyさん mailto:sage [2010/10/03(日) 17:27:45 ID:???]
『a*a/a/*/a*a/a/*/a*a/a*a/a/*/a*a/a/*/a*a/a*a/a/*/a*a/a/*/a*a/a*a/a/*/a*a/a/*/a*a/a』

この文字列の
/* ~~~ */ で囲まれた部分それぞれを全て正規表現で抜き出せるのですか?

653 名前:652 mailto:sage [2010/10/03(日) 17:28:53 ID:???]
すいません。使用言語はPHP5.1.6です。

654 名前:652 mailto:sage [2010/10/03(日) 17:53:37 ID:???]
事故解決しました。

655 名前:nobodyさん mailto:sage [2010/10/20(水) 18:27:58 ID:???]
「/index.php/blog/new/id/17」
から、phpファイル名(/index.php)のみ削除するにはどうすればいいでしょうか?
ファイル名は変わることがあります。

656 名前:nobodyさん mailto:sage [2010/10/20(水) 22:18:19 ID:???]
s{/[^/]+?\.php}{}

657 名前:655 mailto:sage [2010/10/21(木) 01:50:09 ID:???]
PHPのpreg_replace()に渡してみたのですが、

>Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in
と言われてしまいます。。。

658 名前:656 mailto:sage [2010/10/21(木) 02:29:25 ID:???]
どういう引数を渡したのかちょっと知りたい。

<?php
$str = '/index.php/blog/new/id/17';

// $pattern = '/\/[^\/]+?\.php/'; // デリミタが / のときはエスケープ
$pattern = '{/[^/]+?\.php}'; // デリミタは { と }
$replace = '';

echo preg_replace($pattern, $replace, $str);
?>



659 名前:nobodyさん [2010/11/13(土) 19:09:08 ID:peMm7xtt]
PHPで、例えば

こう言った文章を考えるのは、たのしい。
わたしは、「こんにちは」と言いました。
「この文章は、なかなか面白いですね。とても正確な正規表現を考える必要があるんです。」
「では、そんな正規表現をどうやって見つけるのでしょうか?そうだ、質問してみましょうよ!。」
「なるほど?。それは面白いアイディアだ。」と、もう一人は言った。

という文章があったときに、

"こう言った文章を考えるのは、たのしい。",
"わたしは、","「こんにちは」","と言いました。",
"「この文章は、なかなか面白いですね。","とても正確な正規表現を考える必要があるんです。」",
"「では、そんな正規表現をどうやって見つけるのでしょうか?","そうだ、質問してみましょうよ!。」",
"「なるほど?。","それは面白いアイディアだ。」","と、もう一人は言った。"

という感じに分割して配列にしたいと思っています。
現在使っている正規表現は
$contents = array();
preg_match_all('/.*?。|.*?「/m',$content,$contents);
という感じで書いてみました。
$contentがもとの文章で、$contentsが新しく得る配列です。
どうも複雑でどうしたら良いのかわからないので質問させていただきます。よろしくお願いします。

660 名前:nobodyさん mailto:sage [2010/11/14(日) 09:26:59 ID:???]
一度にやろうとしないで分けてやればいいと思うよ

661 名前:nobodyさん [2010/11/14(日) 22:54:16 ID:xJLLsuw0]
正規表現での重複行の削除について
質問させてください

みかん   みかん
みかん   (空白行)
りんご → りんご
なし    なし
なし    (空白行)
なし    (空白行)
かき    かき

というかんじで
重複行は空白のままで残したいのですが
どうすべきでしょうか?

662 名前:nobodyさん mailto:sage [2010/11/14(日) 22:55:28 ID:???]
スクリプト言語でやったほうが楽じゃね?

663 名前:nobodyさん [2010/11/14(日) 23:35:35 ID:xJLLsuw0]
できればこんなかんじで
エディタの検索置換でやりたいです


d.hatena.ne.jp/seuzo/20080531/1212228668

664 名前:nobodyさん mailto:sage [2010/11/15(月) 00:12:15 ID:???]
でこぽん
みかん
りんご
りんご
みかん
みかん
りんご
でこぽん

こんな風に離れた行に重複がある場合はどうすんだろ?ソート済みなのかな。

665 名前:nobodyさん [2010/11/15(月) 00:48:49 ID:AfSBC14n]
エクセルでソートしてあるます


666 名前:nobodyさん [2010/12/06(月) 23:51:24 ID:k5Tua1Td]
メールアドレスが正しいかマッチング。
ただし、@gmail.com、@googlemail.com、@livedoor.comの場合は
@の前に「+」「.」が含まれている場合は除外する。
これって正規表現1発でできたりしますか?

667 名前:nobodyさん mailto:sage [2010/12/06(月) 23:53:00 ID:???]
yes

668 名前:nobodyさん mailto:sage [2010/12/08(水) 14:11:59 ID:???]
メールアドレスの妥当性の判定はどのぐらい厳密にやるのだろう



669 名前:nobodyさん [2010/12/20(月) 16:51:11 ID:Qb400/Ia]
php5で、tableタグ内の改行(<br />)を全て削除したいのです。
どうしたら良いんでしょう。

●置換前
<table border="1" cellpadding="5" cellspacing="0" class="xx" id="xx"><br />
<tbody><br />
<tr><br />
<td><br />
</td><br />
</tr><br />
</tbody><br />
</table>

●置換後
<table border="1" cellpadding="5" cellspacing="0" class="xx" id="xx">
<tbody>
<tr>
<td>
</td>
</tr>
</tbody>
</table>

670 名前:nobodyさん mailto:sage [2010/12/20(月) 20:03:43 ID:???]
>>669
str_replaceでおk

671 名前:nobodyさん mailto:sage [2010/12/20(月) 20:48:53 ID:???]
普通はstrip_tagsじゃね?

672 名前:nobodyさん mailto:sage [2010/12/21(火) 08:13:01 ID:???]
テーブル外のbrは削除したくないんだろ

673 名前:nobodyさん mailto:sage [2010/12/24(金) 08:47:52 ID:???]
この手のことをやりたい人は沢山いると思うので
散々既出の可能性がありますが、
参考ページでも構いませんので教えてください

UWSCのコードを書くのにK2Editorを使っています
仕上げたコードの可読性をあげるために
演算子の前後にスペースを入れたいです
例 x+y=z
  x + y = z

K2Editorの正規表現はBREGEXP.DLLを使っています
以下の置換をマクロで行います

"([^ ])([\+\-\*<])","$1 $2"
"([^ <])>","$1 >"
"([\+\-\*=])([^ ])","$1 $2"
"([^ <>])=","$1 ="
"<([^ =>])","< $1"
">([^ =])","> $1"
"([^ \/])\/([^\/])","$1 /$3"
"([^\/])\/([^ \/])","$1/ $3"
" "," "
" +"," "
"([,=\+\-\*\/\(<>]|mod|and|or|xor) - ","$1 -"

正規表現はド素人でネットで検索しながら書いたので
まずい部分も多いと思いますがそれは置いといて、
本題はダブルコーテーションで括られた文字列内は
置換したくないのですが、何か方法はありますか?

674 名前:nobodyさん mailto:sage [2010/12/29(水) 07:28:15 ID:???]
性器表現難しいよね

675 名前:nobodyさん [2011/01/06(木) 22:08:59 ID:y0rS3N6j]
質問です。PHP5.3でpreg_matchを使っているのですが、例えば
「次章(第20条の3、第1節の3、・・・除き、建築基準法第80条の2にあっては・・・」
という文章より法律名称や条などをwhileループで拾い上げたいのですが、

/([第]*)([1-9]+[0-9]*)([条項号]+)[の]*([1-9]+[0-9]*)*[の]*([1-9]+[0-9]*)*(.*)/

で拾い上げると、法律名称(上の文章だと「建築基準法」)が抜けてしまうので

/([建築基準法|建築基準法施行令]*)([第]*)([1-9]+[0-9]*)([条項号]+)[の]*([1-9]+[0-9]*)*[の]*([1-9]+[0-9]*)*(.*)/

と言う形で拾うと、なぜかpreg_match($match, $text, $arr)の$arrの中に、なぜか「第」という文字が拾われてきません。
これは何故なんでしょうか??
もし理由が分かる方がいらっしゃったら、お教え願います。

676 名前:nobodyさん mailto:sage [2011/01/07(金) 03:55:37 ID:???]
性器表現で痴漢する

677 名前:nobodyさん mailto:sage [2011/01/07(金) 03:58:44 ID:???]
$text = '次章(第20条の3、第1節の3、・・・除き、建築基準法第80条の2にあっては';
$pat1 = '/([第]*)([1-9]+[0-9]*)([条項号]+)[の]*([1-9]+[0-9]*)*[の]*([1-9]+[0-9]*)*(.*)/';
$pat2 = '/([建築基準法|建築基準法施行令]*)([第]*)([1-9]+[0-9]*)([条項号]+)[の]*([1-9]+[0-9]*)*[の]*([1-9]+[0-9]*)*(.*)/';
preg_match($pat1, $text, $arr);
var_dump($arr);
preg_match($pat2, $text, $arr);
var_dump($arr);

array(7) {
[0]=> string(62) "第20条の3、第1節の3、・・・除き、建築基準法第80条の2にあっては"
[1]=> string(2) "第"
[2]=> string(2) "20"
[3]=> string(2) "条"
[4]=> string(1) "3"
[5]=> string(0) ""
[6]=> string(53) "、第1節の3、・・・除き、建築基準法第80条の2にあっては"
}
array(8) {
[0]=> string(62) "第20条の3、第1節の3、・・・除き、建築基準法第80条の2にあっては"
[1]=> string(0) ""
[2]=> string(2) "第"
[3]=> string(2) "20"
[4]=> string(2) "条"
[5]=> string(1) "3"
[6]=> string(0) ""
[7]=> string(53) "、第1節の3、・・・除き、建築基準法第80条の2にあっては"
}

第が拾われないってどこの話?
あと関係ないけど複数拾いたいならpreg_match_all

678 名前:nobodyさん mailto:sage [2011/01/07(金) 08:16:20 ID:???]
[マルチバイト] この時点でおかしいやろ



679 名前:nobodyさん mailto:sage [2011/01/07(金) 08:35:43 ID:???]
u 修飾子つきじゃないのかな?
[第]* は量指定子も含めてどうかと思うけどね。

680 名前:nobodyさん mailto:sage [2011/01/07(金) 11:13:33 ID:???]
PHPのPerl互換正規表現で、連続した文字を判定したい(3文字以上)
下のではだめ?
preg_match("/(.)\1{3,}/", $hoge)
例→AAA、bbb、111、あああ他なら引っかかるようにしたい、ということ






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

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

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