[表示 : 全て 最新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]
【正規表現道場の掟】

・言語不問

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

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

717 名前:nobodyさん [2011/06/04(土) 18:19:07.23 ID:GeFi3irL]
<html>......<div class="list">画像リスト<br>1枚目<br><img src="example.com/aaa.jpg"><br>
2枚目<br><img src="example.com/bbb.jpg"><br>
3枚目<br><img src="example.com/ccc.jpg"><br>もっと見る<br></div>........</html>

これで<div class="list">と</div>の間のアドレスだけ抜き出すのってどうやりますか?
........の中にも画像アドレスがあります。そっちはマッチさせないようにしたい。

preg_match_all("/list\".+?src=\"(.+)\".+</div>/", $html, $m);

718 名前:nobodyさん mailto:sage [2011/06/04(土) 19:29:38.67 ID:???]
2段階に分けるべし

719 名前:nobodyさん mailto:sage [2011/06/04(土) 19:32:39.30 ID:???]
>>717
なんでそれを正規表現でやろうとするのかがわからん。視野狭窄か。

720 名前:nobodyさん mailto:sage [2011/06/04(土) 22:11:24.15 ID:???]
>>717
php.net/manual/ja/function.preg-replace-callback.php

721 名前: 忍法帖【Lv=4,xxxP】 mailto:sage [2011/06/04(土) 22:38:07.91 ID:???]
質問者が言語を指定していない時点でお察し下さいレベル。

722 名前:nobodyさん mailto:sage [2011/06/04(土) 23:04:45.68 ID:???]
preg_match_all は PHP の関数

723 名前:nobodyさん [2011/06/05(日) 14:02:49.98 ID:uEzVCQDA]
>>717
正規表現一発でできそうな気がするんですが、無理ですか?

固定単語--- この中を検索 ---固定単語

こんな場面てよくあるような

724 名前:nobodyさん mailto:sage [2011/06/06(月) 08:01:30.97 ID:???]
>>709
win7HP?

725 名前:nobodyさん [2011/06/16(木) 23:36:27.10 ID:SYj2PUn3]
phpでpreg使っています。
あるファイル内の
<td width="71%" valign="top" align="center"><div align = "center">

<td width="71%" valign="top" align="center">
だけに変換したいとおもい
$regTxt = "/<td ([a-z0-9\"=\s\%]+)><div ([a-z0-9\"=\s\%]+)>/is";
preg_match($regTxt,$x,$exchangeArr);
で$exchangeArr[1]を削除するため、preg_replaceを使おうと思っています。

ただ、最初のpreg_matchでマッチしません。
どうしたら出来るのでしょうか??

どなたかお教えください。お願いします。



726 名前:nobodyさん mailto:sage [2011/06/16(木) 23:41:03.98 ID:???]
preg_matchで$exchangeArr[1]を削除するためpreg_replace?
日本語でおk

727 名前:nobodyさん [2011/06/16(木) 23:44:03.44 ID:SYj2PUn3]
<div align = "center"> を削除するため
でお願いします。

728 名前:nobodyさん mailto:sage [2011/06/16(木) 23:45:43.17 ID:???]
preg_matchとpreg_replaceを併用する必要があんの?

729 名前:nobodyさん [2011/06/16(木) 23:52:34.42 ID:SYj2PUn3]
<td....>が様々な形をとっているため、まずはそれらを取り出す必要があるかと思い、そうしてます。

<td....><div...>という形で、<td...>も<div...>のそれぞれの...が、様々な形をとっているけど、<td...>だけをきれいに残したいのです。

ただ、<div...>だけのもの(前に<td...>がついていない)は変換したくないのです。
こんな説明でわかります?

730 名前:nobodyさん mailto:sage [2011/06/16(木) 23:56:08.62 ID:???]
正規表現を細分化して問題の切り分けしてみるといいと思うよ

731 名前:nobodyさん mailto:sage [2011/06/18(土) 14:34:02.52 ID:???]
>>725,729
その様々な形を正規表現で指定すればいいと思うけどね。

$string = '<td width="71%" valign="top" align="center"><div align = "center">';
$string = preg_replace('/(<td [^>]+><div) [^>]+/', '$1', $string);

732 名前:nobodyさん mailto:sage [2011/06/18(土) 14:41:26.83 ID:???]
閉じタグのことは無視かい

733 名前:731 mailto:sage [2011/06/18(土) 17:07:20.38 ID:???]
>>732
それは俺も思った。
divがネストしていたら対応関係がおかしくなるはずなんで開始タグは残すべきだと思うな。

734 名前:nobodyさん [2011/06/30(木) 00:52:32.34 ID:hWRw8zI0]
PHP5.3のpreg_replaceで
/<td[^>]+><div[^>]+/とかで正規表現をやっても、全く変更されません。
preg_matchでやってみると<td[^>]+>までならmatchするけど、「<」以降を入れると、全く引っかかってきません。

何か思い当たること、ないでしょうか?

735 名前:nobodyさん mailto:sage [2011/06/30(木) 06:05:38.15 ID:???]
対象としている文字列にその正規表現にマッチする部分が存在しない



736 名前:nobodyさん mailto:sage [2011/06/30(木) 07:23:46.62 ID:???]
何か勘違いしているとか見落としているとしか思えない

737 名前:nobodyさん mailto:sage [2011/06/30(木) 21:31:52.67 ID:???]
量指定子を'+'から'*'にしてみたらマッチしました、みたいな話な気がしてならない。

738 名前:734 [2011/07/03(日) 22:32:36.09 ID:8QAPbG3u]
どうやら正規表現は問題なかったみたいです。
phpでファイルをfopenで読み込んで、
while ($x = fgets($fp,1092)) {...}で変換をさせているんだけど、
<td..>部分と<div..>部分の間に改行が入っているから、変換できないらしい。
どうしたらいいでしょう??

739 名前:nobodyさん mailto:sage [2011/07/03(日) 22:39:11.31 ID:???]
工夫すれば?

740 名前:nobodyさん [2011/07/03(日) 23:37:07.72 ID:ypX399q3]
$string = preg_replace('/<div align = \"center\"> /', '', $string);
$string = preg_replace('/<\/div>/', '', $string);
か、

$string = preg_replace('/<div(.*?)> /', '', $string);
$string = preg_replace('/<\/div>/', '', $string);
じゃねえの

741 名前:734 [2011/07/03(日) 23:45:10.46 ID:8QAPbG3u]
全てのdivを削除したい訳でなく、<td....></td>間にある<div></div>を削除したいのです。
<td....></td>間にあるものは削除して、それ以外は改行したいのです。

742 名前:nobodyさん mailto:sage [2011/07/05(火) 00:46:35.42 ID:???]
preg_replaceを連打して取りたいのだけ取ればええやん

743 名前:nobodyさん mailto:sage [2011/07/16(土) 18:02:18.22 ID:???]
http://から最初の空白までを抽出する正規表現はどうなりますか?

744 名前:nobodyさん mailto:sage [2011/07/16(土) 22:16:17.55 ID:???]
/http:\/\/[^ ]* /

745 名前:nobodyさん [2011/07/23(土) 20:12:09.44 ID:lXdqpzgT]
Aの繰り返しはA+とかA{m,n}でマッチできますが、
繰り返された個数を元にAAAAAをA*5などに置換する「うまい」方法はあるでしょうか。

言語はとりあえずJavaScriptで考えています。
replace(/A+/g, 'A*'); //←ここから進まない。



746 名前:nobodyさん mailto:sage [2011/07/23(土) 20:22:41.87 ID:???]
>>745
正規表現にはないのでJavaScriptスレへ

747 名前:nobodyさん [2011/07/23(土) 20:34:12.11 ID:lXdqpzgT]
>>746
ありがとうございます。以下で質問し直しました。
hibari.2ch.net/test/read.cgi/hp/1311096825/90n

748 名前:nobodyさん [2011/07/24(日) 19:06:14.31 ID:/DoWXp9n]
「次の人」または「前の人」という文字列を文章内から拾う場合、どの様な書き方が良いのでしょうか??
[次の人 | 前の人] だと「の」一文字だけでも拾ってしまいます…

749 名前:nobodyさん mailto:sage [2011/07/24(日) 21:04:07.81 ID:???]
"[abc]"は「『a』か『b』か『c』にマッチ」だぞ…。
君の書いた正規表現は「『次』か『前』か『の』か『人』か『|』か『 』にマッチ」だ。

多分"(次の人|前の人)"みたいなことがしたかったんだろうけど、
"[次前]の人"でいいと思う。

750 名前:nobodyさん mailto:sage [2011/07/24(日) 21:07:51.65 ID:???]
あと、似たようなのでありがちなのが
"[^hogehoge]"で文字列の否定を指定したつもりになっちゃう人。

もちろん間違い。念の為。

751 名前:nobodyさん [2011/07/24(日) 22:38:19.38 ID:X7IDpmYo]
>>750
では何が正しいのでしょうか?

752 名前:nobodyさん mailto:sage [2011/07/24(日) 22:54:58.14 ID:???]
>>751
[次前]の人

753 名前:nobodyさん mailto:sage [2011/07/24(日) 23:02:35.46 ID:???]
あ、とんちんかんだった。
文字列の否定は
(?!.*文字列.*).*
みたいのかなぁ

754 名前:nobodyさん [2011/07/25(月) 21:55:36.12 ID:RVWZInKC]
formからの情報を編集しているんですがケータイ絵文字(5社の)が入ったら消すというのはできますか?

PHP5です。

755 名前:nobodyさん mailto:sage [2011/07/25(月) 22:46:11.52 ID:???]
>>754
3社だけど、
Emo PHP携帯絵文字ライブラリ
gard.no-ip.info/emo/readme/study/reg.html



756 名前:nobodyさん [2011/07/25(月) 23:06:55.26 ID:RVWZInKC]
>>754

ありがとうございました

757 名前:nobodyさん [2011/07/27(水) 20:41:33.29 ID:PkulA4Dr]
40過ぎたオッサンが、訓練校出てWebで独立するとか寝言いってますwwwwww
サラリーマンに、無理だと指摘され発狂中wwww



Webデザインの基金訓練を受講してる人 Part2
yuzuru.2ch.net/test/read.cgi/dame/1308059991

>>505

俺は40代で基金訓練受けて、これから独立しようと考えてるがな。
まぁ若干経験あるからその方面での話だけど。
基金訓練は単に「バナーくらい作れますよ」って言うだけのために受けた。

30代ならデジハリにもいっぱいいるぞ、余裕だろ。
ちゃんとした社会人経験があればだが。

758 名前:nobodyさん mailto:sage [2011/07/30(土) 14:00:39.72 ID:???]
>>757
ID:1gQ87Cnm がきもかった

759 名前:nobodyさん mailto:sage [2011/08/01(月) 07:47:20.91 ID:???]
^(\d{3},)*\d{3}$
上記正規表現で123がヒットする理由が分かりません
カンマがなくても何故ヒットするんですか?
*の前が()だからであってますか?

<対象文字列>
123
123,456
987,654,321
123,789,456,012
9876,543
123,456,

<HIT文字列>
123
123,456
987,654,321
123,789,456,012



760 名前:nobodyさん mailto:sage [2011/08/01(月) 07:59:48.61 ID:???]
>>759
*の意味を調べよう

761 名前:nobodyさん mailto:sage [2011/08/01(月) 07:59:51.56 ID:???]
* → + で解決しない?
*はゼロ個以上でマッチだから。


762 名前:759 mailto:sage [2011/08/01(月) 08:58:25.47 ID:???]
>>760
調べなくても分かってますが()*も同様なのかと思いまして

>>761
いえ、nnnの場合もヒットさせたかったので*でいいのです
仕様というか動きの確認だけが目的で書き込んだので

763 名前:nobodyさん [2011/08/01(月) 09:39:13.59 ID:3IgNAOvk]
>>759の意図がいまいちよくわからんが、
「a*」の時と「(abc)*」の時とで*の機能が変わらないことを確認したかったの?

あと若干言葉遣いに波風が立つ雰囲気を感じてしまうのはオレだけ(笑)?

764 名前:nobodyさん mailto:sage [2011/08/01(月) 09:43:31.28 ID:???]
ヒント:ID隠し

765 名前:nobodyさん mailto:sage [2011/08/01(月) 09:48:49.11 ID:???]
俺もちょっとイラッときた



766 名前:nobodyさん mailto:sage [2011/08/01(月) 09:52:47.51 ID:???]
(\d{3},)* 関係ないじゃんw

767 名前:nobodyさん mailto:sage [2011/08/01(月) 10:28:45.34 ID:???]
>>762
どう見てもわかってないだろw

768 名前:nobodyさん mailto:sage [2011/08/01(月) 17:56:48.08 ID:???]
>>763
> >>759の意図がいまいちよくわからんが、
> 「a*」の時と「(abc)*」の時とで*の機能が変わらないことを確認したかったの?
はい

> あと若干言葉遣いに波風が立つ雰囲気を感じてしまうのはオレだけ(笑)?
イラッ☆

769 名前:nobodyさん mailto:sage [2011/08/01(月) 17:59:56.76 ID:???]
機能が変わらない事の確認なのに質問内容が
>ヒットする理由がわかりません
っておかしいだろw

770 名前:nobodyさん mailto:sage [2011/08/01(月) 18:00:59.64 ID:???]
>>766
どう言う事でしょうか?
もっとスマートな方法があるのであれば是非ご教示願います

>>767
何がいけないのかさっぱりです
直近文字の0回以上のhitって事でないの?

771 名前:nobodyさん mailto:sage [2011/08/01(月) 18:02:51.58 ID:???]
>>769
そんなおかしいですかね
でも、確かに表現が悪くて申し訳ないです


772 名前:nobodyさん [2011/08/01(月) 18:11:52.38 ID:3IgNAOvk]
根はいいやつそうでよかった(´ω`)…。

773 名前:nobodyさん mailto:sage [2011/08/01(月) 18:44:25.32 ID:???]
直近「文字」とは限らないだよ。
(お題のこんなのとか)*(?:ほかにもこんなのとか)*[いろ]*あるでしょう。

774 名前:nobodyさん mailto:sage [2011/08/01(月) 19:21:33.25 ID:???]
>>770
123がヒットしたのは
\d{3}の部分だけといえば分かるだろうか
(\d{3},)*は0回ってことで

775 名前:nobodyさん mailto:sage [2011/08/01(月) 22:22:11.88 ID:???]
>>774
超絶完全理解感謝激励歓迎降臨!
謝謝!!

伝わり難い文章で多レスしてしまってすいませんでした



776 名前:nobodyさん [2011/08/01(月) 22:37:10.25 ID:3IgNAOvk]
>>774の指摘がそこまで的確なものだったってのもいまいちピンと来ない件(笑)
まあよかったな( ´∀`)

777 名前:nobodyさん mailto:sage [2011/08/01(月) 22:54:31.04 ID:???]
わろた

778 名前:nobodyさん mailto:sage [2011/08/02(火) 11:07:19.68 ID:???]
結局わかってなかったんじゃんw

779 名前:nobodyさん mailto:sage [2011/08/03(水) 19:33:03.57 ID:???]
762 名前: 759 [sage] 投稿日: 2011/08/01(月) 08:58:25.47 ID:???
>>760
調べなくても分かってますが()*も同様なのかと思いまして

>>761
いえ、nnnの場合もヒットさせたかったので*でいいのです
仕様というか動きの確認だけが目的で書き込んだので


780 名前:nobodyさん mailto:sage [2011/08/04(木) 09:41:51.16 ID:???]
動きの確認ならパターン出してテストすりゃいいだけじゃん

なんかイラッとするな

781 名前:nobodyさん mailto:sage [2011/08/04(木) 12:34:18.67 ID:???]
>>780
イラッ☆

782 名前:nobodyさん mailto:sage [2011/08/26(金) 08:02:24.21 ID:???]
test

783 名前:nobodyさん mailto:sage [2011/09/02(金) 00:33:38.37 ID:???]
>>782
イラッ☆

784 名前:nobodyさん mailto:sage [2011/09/06(火) 00:06:31.30 ID:???]
ttp//aaa.co.jp:8888
http//bbb.com:9999/
を除外しつつ
他の
h?ttp//○○○.△△△.□□□:☆☆☆/?
     ↑ここから      ここまで↑
をヒットさせたいのですが色々試したのですが出来ませんでした
何か方法がありますでしょうか?

785 名前:nobodyさん mailto:sage [2011/09/06(火) 00:20:00.51 ID:???]
h?ttp:\/\/(?!aaa.co.jp:8888|bbb.com:9999)(\w+\.)+\w+(:\d+)?\/?



786 名前:nobodyさん mailto:sage [2011/09/06(火) 00:28:37.10 ID:???]
>>785
レスありがとうございます
助かりました

787 名前:nobodyさん mailto:sage [2011/09/14(水) 01:54:57.08 ID:???]
2chのdatの1(1行目)のレス内にトリップ(10桁以上でも10〜12桁でもok)が
含まれてる場合にヒットさせたいのですが、一部除外したいトリップあります

◆(?!5s5hPZiJeU|ozOtJW9BFA).{10}
まではできたような気がするのですが1行目にマッチさせるにはどうしたら良いでしょうか
SJISです。


788 名前:nobodyさん mailto:sage [2011/09/14(水) 08:26:15.86 ID:???]
>>787
^?dとか

789 名前:nobodyさん mailto:sage [2011/09/14(水) 13:20:15.86 ID:???]
>>787
mフラグ

>>788


790 名前:nobodyさん mailto:sage [2011/09/15(木) 22:42:04.53 ID:???]
>>789
ありがとうございます
よく分からなかったので調べてみると複数行の行頭、文末にマッチさせることができるのですね
残念ながら行頭、文末にトリップがあるわけでないのでうまくないようです。。


791 名前:nobodyさん mailto:sage [2011/09/16(金) 01:40:23.90 ID:???]
>>790
789ではないが、mフラグをつけたら駄目だ
^ を利用すれば一行目のトリップにマッチできる
mフラグをつけたら破綻する

792 名前:nobodyさん mailto:sage [2011/09/16(金) 01:49:30.98 ID:???]
処理系を書かないからでしょ。

>>789のいうmオプションは「改行文字を無視する単一行モード」の意味
(Ruby等の流儀)で書いていて、
>>790はそれを「複数行モード」の意味(Perl等の流儀)に取っている。

793 名前:nobodyさん mailto:sage [2011/09/22(木) 02:27:55.73 ID:???]
>>790
先頭から、最初に改行コードが出てくるまでが1行目だよ

794 名前:nobodyさん [2011/10/02(日) 19:26:42.05 ID:Tnal10Vi]
abcdefgfedcba という文字列から
defという文字列を消すこと出来るのですが、
def以外を消すにはどうすればいいのでしょうか?

795 名前:nobodyさん [2011/10/02(日) 20:09:22.37 ID:zbShr9jh]
漠然としすぎ



796 名前:nobodyさん mailto:sage [2011/10/03(月) 06:19:41.91 ID:???]
>>794
よくわからんが否定はめんどくさいぞ。

([^def]|d(?!ef)|(?<!d)e(?!f)|(?<!de)f)

でdefの一部であるd,e,f以外の任意の1文字にマッチするから
これでなんとかなるだろう。



797 名前:nobodyさん mailto:sage [2011/10/03(月) 21:56:35.04 ID:???]
>>794
環境によるけど、(def)ですべてにマッチさせて、あとから取得した$1的なものに置換すればいいのでは

798 名前:nobodyさん mailto:sage [2011/10/07(金) 11:38:20.62 ID:???]
>>794
/def|[\s\S]/ でcallbackして def 以外は全て削除


799 名前:nobodyさん mailto:sage [2011/10/10(月) 10:36:17.70 ID:???]
PHPにてHTMLタグ以外の全ての文字について、全角・半角の統一などの処理を
したいと思うのですが、例えば英字を全角で統一したい場合、素人考えでは
最も単純に作業をするには「全ての英字を全角に」→「タグのみ半角に」という
2回に分けた処理がベストかと思うのですが、もっと効率の良い処理の方法は
ありますでしょうか?


800 名前:nobodyさん mailto:sage [2011/10/10(月) 11:10:33.30 ID:???]
PHPなら効率にこだわるより、メンテナンス性を重視した方がいいと思う。

801 名前:nobodyさん [2011/10/10(月) 16:07:33.02 ID:gughiUX1]
"<"に続く文字(">"が来たら終了)は全部半角化
それ以外はどしどし全角化

でおk
それはさておき、やんごとなき理由さえなければ統一するなら全角じゃなく半角にしとけ。

802 名前:nobodyさん mailto:sage [2011/10/11(火) 00:33:04.23 ID:???]
>>799
DOMで処理するのがいいかと

803 名前:nobodyさん mailto:sage [2011/10/11(火) 00:36:07.74 ID:???]
>>801
<input type="button" value="zenkaku">

804 名前:nobodyさん mailto:sage [2011/10/11(火) 23:11:43.85 ID:???]
>>800
メンテナンス性にこだわるとどんな感じになるか……まるでイメージできません……orz

>>801
すいません、やんごとなき理由で全角化せねばならないのです…。
ところでその方法は正規表現は特に使わず、1文字ずつチェックしていく感じでしょうか?

>>802
DOMを使うというと……やはりこれも正規表現は使わない感じですか?

>>803
今回は特にタグの中身まではいじらない予定なので全角valueでもokです。

805 名前:nobodyさん mailto:sage [2011/10/12(水) 00:03:54.71 ID:???]
>>801
すいません、スレ違いになってしまいましたが、ひとまずその方法を試してみました。
が、実体参照(&anpとか)が出てきたときにややこしいことになりそうです…orz
この場合だけ力技で切り抜けるか、もしくはやはりある程度正規表現で処理を
した方が良さそうな気がしますがどうでしょうか。

あるいはDOMの方が簡単なのでしょうか…?
どう回せばタグの中身が取り出せるのかいまひとつわからないです。。。



806 名前:nobodyさん mailto:sage [2011/10/12(水) 00:21:33.58 ID:???]
あー…後から全角&XXX;を半角にするって方法もありますねえ…。
うーん。

807 名前:nobodyさん [2011/10/14(金) 09:47:43.56 ID:+/AP5o7r]
htmlのソースからタグを除外するのに挑戦してて以下のようにしたんですが
もっと効率いいやり方あるでしょうか?

\<[a-zA-Z0-9\"\<\>\ \=\;\:\/\.\_\-\(\)\#\!\'\&\%]+

808 名前:nobodyさん mailto:sage [2011/10/14(金) 15:25:07.10 ID:???]
どんだけ円がすきなのかとw

809 名前:nobodyさん [2011/10/14(金) 15:26:32.18 ID:i4T0D1ix]
>>807
↓だと「Hello」ごと消えていかないか?
<p>Hello</p>
↓だと「…alt="」で止まってしまわないか?
<img src="hello.png" alt="こんにちは">

↓というわけでこれでいいんじゃないの。
<[^>]>

810 名前:nobodyさん [2011/10/14(金) 15:28:56.11 ID:i4T0D1ix]
失礼「+」が抜けてた
<[^>]+>

811 名前:nobodyさん [2011/10/15(土) 02:18:16.86 ID:pl58b8lQ]
フジテレビデモ
花王デモ
要チェック


812 名前:nobodyさん mailto:sage [2011/10/15(土) 15:28:36.48 ID:???]
>>809
これは便利。ありがとう

813 名前:nobodyさん mailto:sage [2011/10/15(土) 16:07:18.81 ID:???]
いいってことよ

814 名前:809 [2011/10/15(土) 18:11:07.01 ID:5td5CFAR]
>>813www

815 名前:nobodyさん mailto:sage [2011/11/01(火) 16:59:25.75 ID:???]
行単位をダブルクオートで囲む正規表現で

ああああ文字列ああああ
いいいい文字列いいいい

検索
/^.*$/m

置き換え
"$0"

とした場合に
"ああああ文字列ああああ
"
"いいいい文字列いいいい
"

となってしまいます。"ああああ文字列ああああ"としたいのですが、どのようにすれば良いでしょうか
PHPのpreg_replaceを使っています。よろしくお願いします。



816 名前:nobodyさん mailto:sage [2011/11/01(火) 17:49:42.69 ID:???]
マッチするないように改行が含まれてるから。

817 名前:nobodyさん mailto:sage [2011/11/01(火) 18:23:24.87 ID:???]
>>815
自己レス
\x0Dが原因でした。

818 名前:nobodyさん mailto:sage [2011/11/01(火) 22:17:43.68 ID:???]
>>817
>>816を無視するのか

819 名前:nobodyさん mailto:sage [2011/11/01(火) 22:40:47.00 ID:???]
>>818

>>816
> マッチするないように改行が含まれてるから。

ではなくて
マッチするないように改行が含まれていなくても\x0Dが付加されるから

無視ではありません。

820 名前:816 != 818 mailto:sage [2011/11/01(火) 23:45:06.62 ID:???]
>>819
言い方が悪かったのかな。CRが含まれてるから。
別にCRは付加されたりしないよ。

preg_replace("/^([^\r]*)\r?$/m", "\\1", $text);
とするか、LFのみに変換してから処理するか。

821 名前:nobodyさん mailto:sage [2011/11/07(月) 22:53:15.08 ID:???]
住所と番地の間にある空白を削除する場合どうやればいいですか?
「見附市 見附 123番地」この文字列を
「見附市 見附123番地」としたいです
「見附市」と「見附」の間の空白はそのままという条件付です

822 名前:nobodyさん mailto:sage [2011/11/08(火) 00:28:51.98 ID:???]
数字が必ずある前提で、
\s[\d]

823 名前:nobodyさん mailto:sage [2011/11/08(火) 01:11:57.96 ID:???]
(?!市).\s

824 名前:nobodyさん mailto:sage [2011/11/08(火) 08:57:43.48 ID:???]
>>823
町や村にもヒットさせろよw
群はいらないか

825 名前:nobodyさん mailto:sage [2011/11/08(火) 10:58:00.13 ID:???]
(東京都|北海道|(?:京都|大阪)府|[県市区群])\s+

\1



826 名前:nobodyさん mailto:sage [2011/11/08(火) 10:58:59.04 ID:???]
ああ、勘違いした
>>825は流してくれ

827 名前:nobodyさん mailto:sage [2011/11/08(火) 12:21:27.42 ID:???]
>>821
(?![市区町村]).\s

828 名前:816 != 818 mailto:sage [2011/11/08(火) 13:46:47.91 ID:???]
郡、な。

829 名前:nobodyさん mailto:sage [2011/11/08(火) 20:01:17.27 ID:???]
しゅくちょく

830 名前:nobodyさん mailto:sage [2011/11/09(水) 02:32:34.16 ID:???]
>>827
空白にマッチしたいんだから↓の間違いだよね。
(?<![市区町村])\s+


831 名前:nobodyさん [2011/11/23(水) 06:53:59.84 ID:V5f5mApl]
![[
 文字列
 ![[別の文字]]
 ![[ほげほげ]]
]]

![[何か]]←これが1単位で、↑こんなの中から最短マッチで抽出したく、以下のようにしました。

$pattern = '/!\[\[([^\[\]]+)\]{2,2}?/';

しかしこの場合、ブラケットが使えないので困っています。

![[ この中に[←とか]←があると使えない ]]

最短マッチさせるにはどう書けばいいでしょうか?

832 名前:nobodyさん mailto:sage [2011/11/23(水) 07:02:11.30 ID:???]
$pattern = '/!\[\[.+?]]{2,2}?/';


833 名前:nobodyさん [2011/11/23(水) 09:23:16.47 ID:V5f5mApl]
>>832
ありがとうございます。
ちなみに↓こうでしょうか?
$pattern = '/!\[\[.+?\]{2,2}?/';

しかしながら、やはり最長マッチになってしまいます。
うっかり書き忘れたのですが、PHPのpreg_matchで行なっています。
PCRE準拠(Prel互換)らしいです。

834 名前:nobodyさん [2011/11/23(水) 09:52:54.59 ID:V5f5mApl]
あ、すみません、できました!
が、1行だといけるのですが、複数行にまたがった場合失敗しました。
↓このような場合

![[
 文[字]列
 ![[別の文字]]
 ![[ほげほげ]]
]]

オプションにmやsを付けてみましたがダメです。

835 名前:nobodyさん mailto:sage [2011/11/24(木) 01:59:39.52 ID:???]
>>834
入れ子の対応とりつつマッチするには
Subroutine Referencesを使えば良いよ。

<?php
$re = '/(?:!\[\[(?:(?!!\[\[)(?!\]\]).|(?R))*\]\])/s';
$text = "![[
  文[字]列
  ![[別の文字]]
  ![[ほげほげ]]
]]";
$position = array();
for ($i = 0; $i < strlen($text); $i++) {
  $pos = strpos($text, '!', $i);
  if (end($position) !== $pos)
    $position[] = $pos;
}
foreach ($position as $pos) {
  $t = substr($text, $pos);
  if (($pos === 0 || $pos) && preg_match_all($re, $t, $match, PREG_SET_ORDER)) {
    var_dump($pos); var_dump($t); var_dump($match); print "----\n";
  }
}
?>




836 名前:nobodyさん [2011/11/25(金) 00:51:55.86 ID:7pZprZ8q]
>>835
うぉ!?ありがとうございます!

837 名前:nobodyさん mailto:sage [2011/11/25(金) 01:08:56.26 ID:???]
>>835
おーこれでいけそうです!
なるほど、こんなやり方がありましたか。とても勉強になりました!


838 名前:nobodyさん [2011/11/27(日) 21:48:09.61 ID:ZbhJICcu]
jsonの形式を配列に変換することは出来ないでしょうか?
phpのjson_decodeだと、どうやら変換エラーが出るようで、正規表現で解決できればと思うのですが。
{"xType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"xNum":{"0":"6","1":"6","2":"5","3":"5","4":"6"},"yType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"yNum":{"0":"5","1":"4","2":"4","3":"5","4":"5"}}
を[xType][0]=main,[xType][1]=main・・・・・的な感じなんですが。

どなたかお願いいたします。

839 名前:nobodyさん mailto:sage [2011/11/27(日) 23:58:55.08 ID:???]
>>838
json_decodeでエラーが出ないんだけど

840 名前:nobodyさん [2011/11/28(月) 08:12:12.66 ID:NxvSoLFs]
>>839
全体はもっと長いのですが...

841 名前:nobodyさん mailto:sage [2011/11/28(月) 11:38:12.26 ID:???]
つーかエラーになるようなjsonモドキを吐く方をなんとかしろよ。

842 名前:nobodyさん mailto:sage [2011/11/28(月) 11:51:50.21 ID:???]
>>840
なぜエラーの原因を特定しないのですか...

843 名前:nobodyさん mailto:sage [2011/11/28(月) 11:52:31.97 ID:???]
あと、json形式でないものを、json形式だと思い込んで正規表現書いても結局うまくいかないとおもう。

844 名前:nobodyさん [2011/11/28(月) 20:38:17.18 ID:cgQZB7ih]
{"1":{"0":{"n":{"xType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"xNum":{"0":"3","1":"5","2":"5","3":"3","4":"3"},"yType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},
"yNum":{"0":"5","1":"5","2":"3","3":"3","4":"5"}}},"1":{"b":{"xType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"xNum":{"0":"5","1":"6","2":"6","3":"5","4":"5"},"yType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},
"yNum":{"0":"5","1":"5","2":"4","3":"4","4":"5"}}},"2":{"l":{"xType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},"xNum":{"0":"4","1":"5","2":"5","3":"4","4":"4"},"yType":{"0":"main","1":"main","2":"main","3":"main","4":"main"},
"yNum":{"0":"5","1":"5","2":"4","3":"4","4":"5"}}}}}
一応こんな感じのデータです。
json形式だと思うんですが、phpのほうでは

Syntax error, malformed JSON
とつれない回答です。

845 名前:nobodyさん mailto:sage [2011/11/28(月) 21:06:49.29 ID:???]
>>844
デコードできたよ(PHP 5.3.2)



846 名前:nobodyさん [2011/11/28(月) 21:16:33.29 ID:cgQZB7ih]
マジっすか??
デコードの仕方が悪いのでしょうか??
できればやり方を教えてください。

847 名前:nobodyさん mailto:sage [2011/11/28(月) 22:13:12.05 ID:???]
こうならないためにもどんなデータをどうやったらエラーになったかを書くのが重要なんだけど。

848 名前:nobodyさん mailto:sage [2011/11/28(月) 22:14:25.01 ID:???]
連レスすまんが、>>838をデコードするのとやり方は変えてないよ。
>>838はデコードできるんだろうから、環境面かもしれないよ

849 名前:846 [2011/11/28(月) 22:41:14.25 ID:NxvSoLFs]
単純にjavascriptの配列をjsonに変換させてからhidden属性に入力。
それをPOSTで送ったPHPファイルで
json_decode($_POST['hidden'])
って形でやってます。hiddenで送ること自体が間違い??
それともhiddenを何かに変換しなければいけないの??

850 名前:nobodyさん mailto:sage [2011/11/28(月) 23:04:04.57 ID:???]
hidden属性とか$_POST['hidden']とか胡散臭そうなのが混ざってるし。
問題の切り分けの仕方について続けたいなら、くだ質とか、超初心者スレみたいなところでどうぞ

851 名前:nobodyさん [2011/11/29(火) 23:04:45.51 ID:gKGxmzY9]
838は出来たけど、844は出来なかった。
同一ファイル上で変数を入れてみた結果として。

852 名前:nobodyさん [2012/01/01(日) 16:05:26.90 ID:vpch3S2x]
整数の桁数上限なし、小数点以下2位までの少数をマッチさせたいのですがうまくいきません。

str.match(/[0-9]*.[0-9][1-9]/g)

どこが間違っているのか教えていただけますでしょうか。
PHP Version 5.2.16です

宜しくお願い致します。

853 名前:nobodyさん mailto:sage [2012/01/01(日) 17:00:46.35 ID:???]
それはJavaScriptにしか見えないけど

854 名前:nobodyさん [2012/01/01(日) 18:04:13.68 ID:Zget/7Sh]
>>852
本当にPHPだとすれば、あってるところのほうが少ない件
preg_match_all('/[0-9]*\.[0-9][0-9]/');

1/100の位は積極的にゼロを省かなきゃならないの?[0-9]でよくね?
あと、単なる整数とか、小数点以下3位以上の数字をどう扱いたいのかによっても変わってくる。
そもそも実際のところは「PHPで出力するHTMLに書かれたJavaScript」あたりかな?

855 名前: 【大吉】 【1107円】 mailto:sage [2012/01/01(日) 19:46:02.61 ID:???]
>>852
マッチさせる文字列が数値のみであれば、
数値判定をした方がいいのでは?

文字であっても強制的に数値に変換する等が可能であれば、
かなり楽です。



856 名前:852 mailto:sage [2012/01/01(日) 23:42:04.11 ID:???]
>853,854,855
大変失礼しました。
854さんのおっしゃる通り、「PHPで出力するHTMLに書かれたJavaScript」でした。

その理解すら不十分でした。申し訳ございませんでした。

857 名前:nobodyさん mailto:sage [2012/01/02(月) 17:24:24.78 ID:???]
>>852
// 1 of 2
// 例として円周率pi
var value = "3.1415926";
var target = value;
// 小数部が無ければ、追加する
if (target.indexOf(".") < 0) {
 target = target.concat(".00");
}
var integral_part_1 = 0;
if (target > 0){
 integral_part_1 = Math.floor(target);
}else{
 integral_part_1 = Math.ceil(target);
}
//document.write(value," の整数部は ", integral_part_1, "<br>");


858 名前:nobodyさん mailto:sage [2012/01/02(月) 17:25:16.42 ID:???]
>>852
// 2 of 2
// 小数第1位を取得
target = target - integral_part_1;
target = target * 10;
var integral_part_2 = 0;
if (target > 0){
 integral_part_2 = Math.floor(target);
}else{
 integral_part_2 = Math.ceil(target);
}
//document.write(value," の小数第1位部分は ", integral_part_2, "<br>");
// 小数第2位を取得
target = target - integral_part_2;
target = target * 10;
var integral_part_3 = 0;
if (target > 0){
 integral_part_3 = Math.floor(target);
}else{
 integral_part_3 = Math.ceil(target);
}
document.write(value," の小数第2位部分は ", integral_part_3, "<br>");


859 名前:nobodyさん [2012/01/06(金) 21:48:56.02 ID:b1y0AA6H]
ここの皆さんのレベルでは簡単すぎるのかもわかりませんが教えてください
Firefoxブラウザのスクリプトで「Google Reader NG Filter」というものがあります
これはRSS文中に特定のキーワードが一致していれば自動的に削除するものです
サンプルとしてADとPRを消す正規表現がはじめから入っています
^\W?(?:ADV?|PR)\b
こういうものです
先頭にADやPRがあれば広告を見なくてもすむわけです

これを応用して見たくないキーワードが含まれているものを消すべく
自分なりに試行錯誤しているのですが上手くいきません
文中のキーワードなので当然^は不要ですし、正規表現のサイトで勉強して改変しても
動かないのです
iPhoneとAndroidというキーワードが含まれていたら削除するという表現をお願いします

860 名前:nobodyさん [2012/01/06(金) 23:01:27.07 ID:pwr91DzE]
(?:iPhone|Android)でいいだろ。
上記にマッチした上で、本文を削除する部分もサンプルからコピペしないとダメだぞ。

861 名前:nobodyさん mailto:sage [2012/01/06(金) 23:25:15.04 ID:???]
.*(iPhone|Android).*

862 名前:nobodyさん mailto:sage [2012/01/06(金) 23:26:11.05 ID:???]
>>860
それやったけど、ダメでした…
普通はこれにしますよね

863 名前:nobodyさん [2012/01/07(土) 00:03:18.47 ID:n5aAiFGN]
>>862
いや少なくとも>>860の正規表現はマッチするはずなので、たとえば
1. マッチさせる対象が本文ではなくタイトルになっている
2. 削除する処理がどうにかなっている
3. その他

864 名前:nobodyさん mailto:sage [2012/01/07(土) 00:05:14.52 ID:???]
>>859
これか
userscripts.org/scripts/show/67840
親ルール,URL,他の条件にマッチしてないんじゃないか?
あと、大文字小文字をチェックしているとか

865 名前:nobodyさん mailto:sage [2012/01/07(土) 00:56:55.41 ID:???]
>ここの皆さんのレベルでは簡単すぎるのかもわかりませんが教えてください
こんな枕詞はいらん。



866 名前:nobodyさん [2012/01/13(金) 15:32:24.50 ID:QW0sWV6a]
<a href="example.com/aaa.jpg"><img src="examle.com/bbb.jpg"></a>

これで<a hrefがない場合に限り<img srcにマッチさせてURIを取得するにはどうすればいい?

preg_match_all('/(?:(?(?=<a href)|src))="([^"]+)/si', $html, $m);
だと<a hrefがあるときは<a hrefの部分は何もマッチしなくてsrcの方がマッチするみたい

867 名前:nobodyさん mailto:sage [2012/01/13(金) 21:09:54.88 ID:???]
まず<a hrefがないというのが何処にないのか、土台をはっきりさせないと

868 名前:nobodyさん mailto:sage [2012/01/14(土) 00:24:14.06 ID:???]
>>866
preg_match_all('|<img src="([^"]*)">(?!</a>)|')

869 名前:nobodyさん mailto:sage [2012/01/15(日) 00:11:37.39 ID:???]
>>866
xhtmlが想定できるなら、正規表現よりxpath使った方が良いよ。
php.netにある例を改変すれば、$stringに文書が文字列化されてるとして、

$xml = new SimpleXMLElement($string);
$result = $xml->xpath('//img[name(..)!="a"]/@src');
while(list( , $node) = each($result)) {
    echo $node,"\n";
}

この場合だと親要素がaではないimg要素のsrc属性ってことが
直接表現できるからね。


870 名前:nobodyさん mailto:sage [2012/02/04(土) 12:29:11.76 ID:???]
こちらのスレッドにはじめて投降します。よろしくお願いします。
・使用言語:java
・質問内容:漢字を余すことなく拾いたい。
※漢字を拾い出す正規表現をネットで調べていたのですが、
なにが新しくて、なにが不十分で、なにが正解なのかわからなくなってしまいました。




871 名前:nobodyさん mailto:sage [2012/02/04(土) 18:34:56.81 ID:???]
漢字以外

872 名前:nobodyさん mailto:sage [2012/02/04(土) 20:48:16.26 ID:???]
[\p{InCJKUnifiedIdeographs}
こういうのをみつけたのですが、これで網羅されているのでしょうか。

873 名前:nobodyさん mailto:sage [2012/02/05(日) 12:00:52.66 ID:???]
code.cside.com/3rdpage/jp/utf-8/indexEastAsian.html
ここらを見て漢字の含まれているグループを加えたらいいんじゃないかしら。拾っては困る文字があるなら
拾いたい漢字のコードポイントを列挙するしかないんじゃないかしら

「ああもう面倒 ! Unicodeに含まれる日本語で使われている漢字だけを拾う正規表現をここに書いてくんろ !」って
ことなら答えてもらえないと思うぞw

874 名前:nobodyさん mailto:sage [2012/02/05(日) 13:17:26.57 ID:???]
>>873
面倒。。。という意味ではなく、漢字を含む文章を取り上げる正規表現を探していたのですが、
調べれば調べるほど種類があり、何を明記すれば過不足なく満足な結果を得られるのか分からなくなったので
質問した次第です。


875 名前:nobodyさん mailto:sage [2012/02/05(日) 13:35:14.15 ID:???]
>>870
JIS X 0208またはJIS X 0213準拠の漢字コードでいいんじゃない?
JIS X 0208準拠なら charset.7jp.net/unicode2.html にあったよ。



876 名前:nobodyさん mailto:sage [2012/02/05(日) 17:49:14.26 ID:???]
>>875
ありがとうございます。[亜-腕弌-熙]に加えて[\-K]もあるようですが、
\p{InCJKUnifiedIdeographs} または[一-龠]とは比べて量が異なるのか否か
使ってはいけないのかどうなのか、教えていただけると嬉しいです。

ちなみにwindows7、Microsoft(R) Office IME 2007 辞書ツール を使っています。

877 名前:nobodyさん mailto:sage [2012/02/05(日) 19:33:01.78 ID:???]
>>876
コード表から検索すればすぐわかると思うんだけど…。
"一" で検索すれば 4e00 にあり、"龠" で検索すれば 9fa0 にあることがわかる。
\p{InCJKUnifiedIdeographs} は実装に依存するからJavaの仕様書を読んで、としか。
使ってはいけない、なんて判断指標もなしに判断できるわけがない。

878 名前:nobodyさん mailto:sage [2012/02/05(日) 19:41:04.69 ID:???]
"JavaTM Platform Standard Ed. 6" には \p{InCJKUnifiedIdeographs} がないね。
java.sun.com/javase/ja/6/docs/ja/api/java/util/regex/Pattern.html

879 名前:nobodyさん mailto:sage [2012/02/05(日) 20:32:59.67 ID:???]
>>877>>878
返答、誠にありがとうございました。
自分の出した結論としては、\p{InCJKUnifiedIdeographs}がクラス Patternにはないこと、
亜は4E9C、Kは9ED1にあり、一と龠の位置よりも狭いことから(並びの順序が違うので一概には言えませんが)、
[一-龠]を使うのが一番妥当と判断しました。

皆様、本当にありがとうございました。


880 名前:nobodyさん mailto:sage [2012/02/17(金) 21:31:06.69 ID:???]
質問です。ABCDEと5つの文字があり、複数の文中・文末に点在しています。

文中・文末にあるABCDEをマッチさせる正規表現を教えてください。
文頭はのぞきたいです。
ネットで調べたりしたのですが、どの言葉を用いると自分の要求する答えが
見つかるのか分からなかったので書き込みしました。
また自分で調べるためにも自己解決できるようなHPを教えていただけると嬉しいです。

よろしくお願いします。
JAVAを用いています。

881 名前:nobodyさん mailto:sage [2012/02/18(土) 01:29:01.30 ID:???]
>>880
文頭は ^ か \n
マルチラインモードで動作しているかによって変わる

882 名前:nobodyさん mailto:sage [2012/02/18(土) 07:45:28.55 ID:???]
>>881
マルチラインモードONだと思います。
それぞれの文章ごとに適用したいと思っています。

追記なのですが、
ABCDEが含まれていない文章も除きたいと考えています。
よろしくお願いします。

883 名前:nobodyさん mailto:sage [2012/02/18(土) 10:11:57.59 ID:???]
>>882
もう答えは出ていると思うんだが…。
否定先読みと ^ を組み合わせればいい。
URLは>>878

884 名前:nobodyさん mailto:sage [2012/02/18(土) 10:58:37.64 ID:???]
>>883
ありがとうございました。

885 名前:nobodyさん mailto:sage [2012/02/22(水) 10:20:21.24 ID:???]
質問です。javaをしようしています。
ひらがな・カタカナ・アルファベット・記号で、連続ではない必ずまじりあった4文字以上の文章
を抜き出す正規表現を教えて頂けないでしょうか。よろしくお願いします。



886 名前:nobodyさん mailto:sage [2012/02/22(水) 22:58:11.24 ID:???]
連続ではないまじりあった状態がどういうことなんだろう。
その4種を用いていればまじりあいそうな。
あアs# はどうなの。

887 名前:nobodyさん mailto:sage [2012/02/22(水) 23:26:26.77 ID:???]
>>886
連続ではない必ず混じりあった4文字以上の文章とは
「ああああ」「アアアア」「aaaa」「◎◎◎◎」等連続した文章ではなく
「あアアa」とか「aaaの」とか「◎あアア」等の文章のことです。

分かりづらくすいません。


888 名前:nobodyさん mailto:sage [2012/02/22(水) 23:50:16.43 ID:???]
>>887
それだけじゃ分かりにくい
例えば「アあアa」はどうなんの?

889 名前:nobodyさん mailto:sage [2012/02/22(水) 23:59:54.01 ID:???]
>>888
「ひらがなだけ」「カタカナだけ」「アルファベットだけ」「記号だけ」の文章ではないのでマッチします。
「あいうえお」はひらがなが連続しているのでマッチしないようにお願いします。

890 名前:nobodyさん mailto:sage [2012/02/23(木) 00:39:32.26 ID:???]
>>889
こんな感じ?

^(?:[a-zA-Zぁ-ゞァ-ヾ、-◯].{4,}|[a-zA-Zぁ-ゞァ-ヾ].{4,}|[a-zA-Zぁ-ゞ].{4,}|[ぁ-ゞァ-ヾ、-◯].{4,}|[ぁ-ゞァ-ヾ].{4,}|[ァ-ヾ、-◯].{4,})$

891 名前:nobodyさん mailto:sage [2012/02/23(木) 00:45:45.26 ID:???]
>>890
表現していただき、本当にありがとうございました。
さっそく活用したいと思います。感謝します。

892 名前:nobodyさん mailto:sage [2012/02/23(木) 01:57:09.70 ID:???]
>>891
ごめん890は流してくれ
なんか頓珍漢なこと書いてたわ

893 名前:nobodyさん mailto:sage [2012/02/23(木) 02:20:18.23 ID:???]
>>892
いえいえ、謝られることなんて。

894 名前:nobodyさん mailto:sage [2012/02/23(木) 09:38:55.66 ID:???]
1つの文字種だけでないならどこかに異なる2つの文字種が並ぶところがある筈
なので、あとは4文字以上の条件を満たすにはその並ぶところの前に2文字以上
あるか、前と後ろに1文字以上ずつあるか、後ろに2文字以上あるかのいずれか
である。

文字クラスをいちいち書くのはだるいのであ,ア,a,○で代表させると

[あアa○]{2,}あア[あアa○]*

みたいのを真ん中の文字種の順列×前と後ろの繰り返し数のパターン分だけ
つくって|で並べればOK


895 名前:nobodyさん mailto:sage [2012/02/23(木) 10:34:55.79 ID:???]
>>894
「[あアa○]{2,}あア[あアa○]*」の真ん中の「あア」の部分を
「あア」「あa」「あ○」「アあ」「アa」「ア○」「aあ」「aア」「a○」
「○あ」「○ア」「○a」の12通り作って|で並べると解釈しましたがよろしかったでしょうか。

制作本当にありがとうございました。





896 名前:nobodyさん mailto:sage [2012/02/23(木) 12:00:24.74 ID:???]
さらに前後の繰り返し数の場合わけで

[あアa○]{2,}あア[あアa○]*
[あアa○]{1,}あア[あアa○]{1,}
[あアa○]*あア[あアa○]{2,}


も必要だから12×3=36通り作って並べる


897 名前:nobodyさん mailto:sage [2012/02/23(木) 12:03:30.20 ID:???]
真ん中だけ違うんだから

[あアa○]{2,}(あア|あa|….)[あアa○]*
[あアa○]{1,}(あア|あa|….)[あアa○]{1,}
[あアa○]*(あア|あa|….)[あアa○]{2,}

とした方が楽だな

898 名前:nobodyさん mailto:sage [2012/02/23(木) 14:37:23.71 ID:???]
>>896>>897さま
追加補足ありがとうございます!

899 名前:nobodyさん mailto:sage [2012/02/23(木) 17:00:23.37 ID:???]
PHP:5.3です。
URLの置換の質問です。
(preg_replace()でやるつもり)

ttp://aa.com/index.php?(適当な文字列) 複数あり

ttp://aa.com/index.html
のようにしたいのですが、どのような正規表現を使ったらいいでしょうか?


よろしくお願いします。



900 名前:nobodyさん mailto:sage [2012/02/23(木) 21:26:51.99 ID:???]
>>899
検索対象
index\.php[\?]+.+$
置換文字列
index.html

URLに含まれるphpファイルが複数存在する場合、GET変数(?以降の文字列)を強制的に除去したい場合
ただし、文中のあらゆる「?」から始まる単語が検索対象となってしまう。
検索対象
[\?]+.+$
置換文字列
index.html


901 名前:nobodyさん mailto:sage [2012/02/26(日) 21:16:58.77 ID:???]
javascriptです。
検索文字列が"manga_index[0-9]+\.html"と"manga_ban_index[0-9]+\.html"
(例:manga_index52342.htmlとmanga_ban_index2.htmlでヒット)

manga_index[0-9]+\.htmlの場合はmanga_ban_index[0-9]+\.htmlとban_を追加し
manga_ban_index[0-9]+\.htmlの場合はmanga_ban_index[0-9]+\.htmlとそのままにしたいのですがどうすればいいのでしょうか?

902 名前:nobodyさん mailto:sage [2012/02/27(月) 16:13:34.47 ID:???]
manga_index を manga_ban_index に置換すればいいんじゃないの

903 名前:nobodyさん mailto:sage [2012/02/29(水) 06:23:11.44 ID:???]
使用言語問わず(?:foo|bar)と(foo|bar)の違いが判りません
自分が読むスクリプト言語の参考書では特に注釈もなしにfooかbarかどちらかに当てはまるものは(?:foo|bar)と書かれますが
初心者向けの正規表現についてのサンプルなど見ると(foo|bar)が多い気がします

どういう違いなのでしょう?初歩的な質問ですがよろしくお願いします

904 名前:nobodyさん mailto:sage [2012/02/29(水) 14:42:57.64 ID:???]
>>903
()で囲むとあとから\1などで参照できます。
(?:)とするとその参照を切ることができます。
()でグループ分けをしたいけど参照はしない、というときにその設定をすると無駄がなくなります。

905 名前:nobodyさん mailto:sage [2012/03/01(木) 17:23:10.26 ID:???]
>>904
今までよくわからないで()を使っていたので
これからはもっと良いものが書けそうです、ありがとうございます



906 名前:nobodyさん mailto:sage [2012/03/05(月) 00:36:21.70 ID:???]
phpの正規表現で、特殊文字、こんなの→(?????)を区別したいんですが、どうすればよいでしょうか。
ざっくりした質問ですので、参考になるサイトを教えてくださる程度でも構いません。

907 名前:906 mailto:sage [2012/03/05(月) 00:47:40.35 ID:???]
文字化けしてますね。すみません。
特殊文字というのは、ミリとかリットルとか、特殊顔文字(読み方がわかりません。ハートとか。)で使われるものです。

908 名前:nobodyさん mailto:sage [2012/03/05(月) 01:55:25.02 ID:???]
>>906
UTF-8で

909 名前:nobodyさん mailto:sage [2012/03/05(月) 09:22:56.91 ID:???]
全部並べて文字クラスにすりゃいいだろ。正規表現以前の問題だな。


910 名前:nobodyさん mailto:sage [2012/03/10(土) 02:43:47.72 ID:???]
479 名前:nobodyさん[] 投稿日:2012/03/10(土) 02:34:43.14 ID:/aJUja8G
文字列の正規表現で
「数値と英語と . と / と hoge 以外にマッチ」
というのをやりたいのですがどうも失敗してしまいます。一発での解決方法とかあるのでしょうか?

\Dやったあとまた\Wでマッチング、その後ドットでマッチングと物凄く効率悪い方法しか思いつかなかったのですが


911 名前:nobodyさん mailto:sage [2012/03/10(土) 02:56:04.76 ID:???]
裏を返せば「数値か英語か . か / か hoge にマッチ」 したらnotマッチ

912 名前:nobodyさん mailto:sage [2012/03/10(土) 03:17:32.46 ID:???]
>>911
貼ったの自分じゃないですがありがとうございます!
そういう考え方でいけばいいんですね

913 名前:nobodyさん [2012/03/20(火) 19:40:54.01 ID:Z+BjIxhL]
javaの表現方法で
Bがあれば削除、ただし直前がAなら削除しない、かつB単体でも削除
という表現方法はありますか?
^[A]Bだと全体で2文字あることが前提のように解釈していますが間違っていますでしょうか。

914 名前:nobodyさん mailto:sage [2012/03/20(火) 19:59:11.06 ID:???]
>>913
[^A]?Bかな

915 名前:nobodyさん [2012/03/20(火) 20:10:18.04 ID:Z+BjIxhL]
>>914
マッチしました。ありがとうございます。



916 名前:nobodyさん mailto:sage [2012/03/21(水) 02:09:27.32 ID:???]
[^A]

少し横向きの人が答えてるようで和んだ

917 名前:nobodyさん mailto:sage [2012/03/21(水) 12:29:51.49 ID:???]
ああ、なるほど。と思ったけど ?があるから「はあ?」って言われてるとこ想像してしまい凹んだ

[^A]?

918 名前:nobodyさん mailto:sage [2012/03/26(月) 23:29:49.84 ID:???]
「あいうえお」のいずれかが3回以上連続したらマッチってどうやればいいんでしょう?
[あいうえお]{3,}だと「あいう」とかにもマッチしちゃって駄目だった。

919 名前:nobodyさん mailto:sage [2012/03/26(月) 23:37:31.05 ID:???]
>>918
([あいうえお])\1{2,}

920 名前:nobodyさん mailto:sage [2012/03/26(月) 23:41:15.88 ID:???]
>>919
ありがとうございます!
解決してすっきりしました。

921 名前:nobodyさん mailto:sage [2012/03/28(水) 18:04:07.49 ID:???]
すいません・・・。
>>913->>917の件にて、結果的にどのように表現すればよい結論になったのでしょうか。


922 名前:nobodyさん mailto:sage [2012/03/28(水) 18:26:58.68 ID:???]
>>914だろ

923 名前:nobodyさん mailto:sage [2012/03/28(水) 18:57:52.69 ID:???]
>>921
>>916>>917は顔文字みたいって言ってるだけやんw

924 名前:nobodyさん mailto:sage [2012/03/28(水) 18:59:57.97 ID:???]
>>922>>923
ありがとうございます。
横向きの人、というのが理解できず失礼しました^^;

925 名前:nobodyさん [2012/03/29(木) 12:43:34.53 ID:UbmjoR9L]
元テキスト:
https://www.google.co.jp/search?hl=ja&safe=off&site=&source=hp&q=test&oq=test&aq=f&aqi=g10&aql=&gs_l=hp.3..0l10.1783l3806l0l4057l7l7l0l0l0l0l145l766l2j5l7l0.frgbld.
https://www.google.co.jp/search?q=test&oe=utf-8&rls=org.mozilla:ja:official&hl=ja&client=firefox-a&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi&ei=n8BzT-uaHqaimQWZweD8Bw&biw=1064&bih=964&sei=ocBzT4e7FqOimQWq3IH5Bw
https://www.google.co.jp/search?q=test&hl=ja&safe=off&prmd=imvnsz&source=lnms&tbm=nws&ei=18lzT6GLE_HTmAXK8N2CCA&sa=X&oi=mode_link&ct=mode&cd=5&ved=0CBsQ_AUoBA&biw=1064&bih=931
maps.google.co.jp/maps?q=test&oe=utf-8&rls=org.mozilla:ja:official&hl=ja&client=firefox-a&um=1&biw=1064&bih=964&ie=UTF-8&sa=N&tab=il

C#:
using System.Text.RegularExpressions;
text = Regex.Replace(text, @"(https?://[a-z.]+\.google\.[a-z.]+/[a-z]+\?).*?(q=[^&]*).*?(&tbm=[^&]*)?[a-zA-Z0-9-_./~*%$@:;,!?&=+#]*", "$1$2$3");

GoogleのURLをシンプル化したいのですが、上記コードだと「(&tbm=[^&]*)?」の部分が拾えません。
最後の?を取ると&tbmを含まないクエリでマッチしなくなります。
どうしたらいいでしょうか。



926 名前:925 [2012/03/29(木) 19:25:30.17 ID:UbmjoR9L]
>>925の問題を解決しつつ、少し進展しました。

text:
https://www.google.co.jp/search?hl=ja&safe=off&site=&source=hp&q=test&oq=test&aq=f&aqi=g10&aql=&gs_l=hp.3..0l10.1783l3806l0l4057l7l7l0l0l0l0l145l766l2j5l7l0.frgbld.
https://www.google.co.jp/search?q=test&oe=utf-8&rls=org.mozilla:ja:official&hl=ja&client=firefox-a&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi&ei=n8BzT-uaHqaimQWZweD8Bw&biw=1064&bih=964&sei=ocBzT4e7FqOimQWq3IH5Bw
https://www.google.co.jp/search?tbm=isch&hl=ja&source=hp&biw=1064&bih=931&q=test&gbv=2&oq=test&aq=f&aqi=g9g-r1&aql=&gs_l=img.3..0l9j0i4.2370l3015l0l3824l4l4l0l0l0l0l111l406l2j2l4l0.frgbld.
https://www.google.co.jp/search?q=test&hl=ja&safe=off&prmd=imvnsz&source=lnms&tbm=nws&ei=18lzT6GLE_HTmAXK8N2CCA&sa=X&oi=mode_link&ct=mode&cd=5&ved=0CBsQ_AUoBA&biw=1064&bih=931
maps.google.co.jp/maps?q=test&oe=utf-8&rls=org.mozilla:ja:official&hl=ja&client=firefox-a&um=1&biw=1064&bih=964&ie=UTF-8&sa=N&tab=il

C#:
text = Regex.Replace(text, @"(https?://[a-z.]+\.google\.[a-z.]+/[a-z]+)(?=.*[?&](q=[^&\s]*))(?=.*[?&](tbm=[^&\s]*))?[a-zA-Z0-9-_./~*%$@:;,!?&=+#]*", "$1?$2&$3");

やりたいこと:
googleのURLのうち、「q=」と「tbm=」の2種類の変数だけ取り出して残りを削ぎ落とす。
ただし、q/tbmの登場は順不同にも対応する。

困っていること:
「tbm=」がないURLでも、置換の第3引数に「&$3」を付けているために「&」だけ付いてしまう。
三項演算子で ("$3"=="")?"":"&$3" とかやろうとしたけど最初の"$3"を展開してくれないようで挫折。
1行追加して、「最後に&だけが付いてたら取り除く」しかないでしょうか。

927 名前:nobodyさん mailto:sage [2012/03/29(木) 20:25:45.43 ID:???]
なんか大変そうだなぁ。
俺なら?で分割して、2個になったら2個目を&で分割して、q=とtbm=を取り出して終わるわ

928 名前:nobodyさん mailto:sage [2012/03/30(金) 00:45:36.69 ID:???]
素直にライブラリ使った方が。
see HttpUtility.ParseQueryString()

929 名前:925 [2012/03/30(金) 13:55:15.20 ID:Wpf4JXLP]
>>927-928の言うとおりという気もしてきましたが、どうやら上手くいったのでご報告します。

C#:
text = Regex.Replace(text, @"(https?://[a-z.]+\.google\.[a-z.]+/[a-z]+)(?(?=\?tbm=)(\?(tbm=[^&\s]*).*?(&q=[^&\s]*))|((?=.*?[?&](q=[^&\s]*))(?=.*?(&tbm=[^&\s]*))?))[a-zA-Z0-9-_./~*%$@:;,!?&=+#]*", "$1?$2$3$5$6");

キャプチャ結果ではなく正規表現のほうに条件式を入れてどうにかできました。
ただし条件が複雑になると書き方がどんどん煩雑になるので拡張性はないかもしれません。

あと、どうも条件式をくくった部分で$4と$7をキャプチャ(両方とも常に空)しているようですが、
そこに(?:を足すと入れ子のカッコ内が全部キャプチャされなくなってしまったので、とりあえずこのまま。

930 名前:nobodyさん mailto:sage [2012/03/30(金) 17:40:03.01 ID:???]
正規表現でがんばらなければだめな理由があるに違いないとそっと放置されるコード片が今まさに生まれたのである。

931 名前:nobodyさん [2012/04/12(木) 15:38:18.00 ID:nr7fN3uJ]
個人の小さいメールマガジンスタンドをやっているのですが
秀丸エディタの正規表現を利用して帰ってきたエラーメールリストから
アドレスだけを抜き出したいのですがどうすればいいでしょうか?

具体的には
---------------------------
メールヘッダー

<abcdefghijklmno@ezweb.ne.jp>
---------------------------
というテキストがあって
<abcdefghijklmno@ezweb.ne.jp>の部分の
abcdefghijklmno@ezweb.ne.jpのみを取り出したいと思っています

よろしくお願い致します

932 名前:nobodyさん mailto:sage [2012/04/13(金) 14:15:11.85 ID:???]
anago.2ch.net/test/read.cgi/software/1331567709/162-164

933 名前:nobodyさん mailto:sage [2012/04/16(月) 12:27:42.62 ID:???]
>>931
秀丸の正規表現スタイル判らないけど、
エディタの検索欄で特定の場所だけ抜き出すって結構大変だよ。
いっそ、perl、php、javascriptで書いた方が良いと思う

934 名前:ゼッケン774さん@ラストコール [2012/05/09(水) 21:57:54.68 ID:BzXqVbz5]
不明

935 名前:nobodyさん [2012/05/10(木) 11:31:59.11 ID:uA0oypVx]
質問です。javaを使用しています。
(?:[\((][一-龠]+[\))]*)
という正規表現をした際、括弧内にひらがなが含まれてしまうのですが、
含まれない漢字のみ括弧内に存在する表現方法を教えていただけないでしょうか。
お願いします。




936 名前:nobodyさん mailto:sage [2012/05/12(土) 18:10:34.44 ID:???]
[\((](?!.*[ぁ-んァ-ヶヲ-゚0-9a-zA-Za-zA-Z0-9])はどうだろう。
しかし、「(笑)www」とかだめだよなあ。

937 名前:nobodyさん mailto:sage [2012/05/13(日) 01:45:46.19 ID:???]
誘導されて来たんですけど、
こんなスレあったのね。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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