トップページ⇒tech
364コメント131KB

正規表現 Part11

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/03/20(水) 17:54:00.46
正規表現(Regular Expression)スレです。

質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。

正規表現 Part10
http://toro.2ch.net/test/read.cgi/tech/1340383120/

天ぷら等2以降
0002デフォルトの名無しさん2013/03/20(水) 17:54:35.52
◆関連サイト
正規表現メモ
http://www.kt.rim.or.jp/~kbk/regex/regex.html
Perl正規表現雑技
http://www.din.or.jp/~ohzaki/regex.htm
Regular Expression(Riue ちゃんの正規表現講座)
http://www.sixnine.net/regexp/
正規表現パズル
http://www.geocities.jp/oraclesqlpuzzle/regex/
詳説 正規表現
http://www.oreilly.co.jp/books/4873111307/
正規表現プログラミングFAQ
http://capslockabcjp.kitunebi.com/faq.html
JScript 正規表現の概説
http://msdn.microsoft.com/library/ja/script56/html/js56reconIntroductionToRegularExpressions.asp
.NET Framework 正規表現言語要素
http://msdn.microsoft.com/library/ja/cpgenref/html/cpconregularexpressionslanguageelements.asp
【 初心者 】 正規表現 【 入門 】
http://funcchan.blog16.fc2.com/
0003デフォルトの名無しさん2013/03/20(水) 17:55:41.83
◆関連スレ
[UNIX板] 正規表現
http://pc12.2ch.net/test/read.cgi/unix/1039165754/
[WebProg] 正規表現道場
http://pc11.2ch.net/test/read.cgi/php/1168450843/

◆前スレ
[1] http://pc8.2ch.net/test/read.cgi/tech/1062152374/
[2] http://pc8.2ch.net/test/read.cgi/tech/1131028296/
[3] http://pc11.2ch.net/test/read.cgi/tech/1156413899/
[4] http://pc11.2ch.net/test/read.cgi/tech/1186030400/
[5] http://pc12.2ch.net/test/read.cgi/tech/1212498448/
[6] http://pc12.2ch.net/test/read.cgi/tech/1241537764/
[7] http://hibari.2ch.net/test/read.cgi/tech/1268979408/
[8] http://hibari.2ch.net/test/read.cgi/tech/1301067486/
[9] http://toro.2ch.net/test/read.cgi/tech/1323566370/
[10] http://toro.2ch.net/test/read.cgi/tech/1340383120/
0004デフォルトの名無しさん2013/03/20(水) 17:56:51.32
スルーされにくい質問のテンプレと例

●正規表現の使用環境
Java1.5

●検索か置換か?
検索

●説明
各行の1番目のAまでを検索したい

●対象データ
ABCA
BCAA
CABA

●希望する結果
ABCA
^
BCAA
^^^
CABA
^^

※ ^ はアンダーラインだそうな ^^;
0005デフォルトの名無しさん2013/03/21(木) 11:11:42.22
●Regular Expressionの使用環境
Ruby 1.9

●検索か置換か?
検索

●説明
red または blue が含まれてない行を検索したい。

●対象データ
yellow red blue green orange
red green yellow orange
black yellow orange white
green yellow blue orange

●希望する結果
black yellow orange white
0006デフォルトの名無しさん2013/03/22(金) 05:11:52.62
糞スレ終了
0007デフォルトの名無しさん2013/03/22(金) 12:23:12.23
重複スレッド建てたバカは削除依頼出しとけよ
0008デフォルトの名無しさん2013/03/22(金) 12:29:08.07
>>7
こちらが一応正統スレタイだから。下品な書き込みを誘発するので
スレタイを変えたことは理解するが。英語はいかんな。
000982013/03/22(金) 12:30:49.83
ごめんなさい。(正規表現)となってましたね。
0010デフォルトの名無しさん2013/03/22(金) 16:09:15.46
リンク先が消えてるのの修正もしてないな。前スレでチェックしてた奴いただろうが馬鹿か。
0011デフォルトの名無しさん2013/03/22(金) 17:01:35.96
馬鹿には無理
0012デフォルトの名無しさん2013/03/22(金) 18:53:02.08
在日工作員!
0013デフォルトの名無しさん2013/04/04(木) 13:55:55.31
やらないか
0014デフォルトの名無しさん2013/04/16(火) 18:24:20.56
なにがしたいの?
0015デフォルトの名無しさん2013/04/16(火) 23:15:20.41
>>14
やらないか?
0016デフォルトの名無しさん2013/04/17(水) 05:45:10.30
>>15
お前「性器表現」のガキだろw
0017デフォルトの名無しさん2013/04/19(金) 04:57:11.47
●問題文
<b>タグのように開始タグの部分にマッチする正規表現を最小限の階数のキャプチャを用いて書きなさい。
タグ名は1文字以上の英単語であり、属性には「>」以外の任意の文字を使えるものとする。
●例文
<b>ゴレイヌさん</b>は、えげつねぇ・・・<font color="red">ゴレイヌさん</font>は
えげつねぇ。。。<font color="blue">富樫仕事</font>しろ。
●マッチする例
<b>
<font color="red">
<font color="blue">

●答え
<(?:\w+)(?:\s+[^>]*)*>
●解説
「<」と「>」に囲まれた部分にマッチさせればよいのですが、属性付きのタグを考慮しなくてはいけません。
また、最小限のキャプチャという条件があるため、グループ化のみでキャプチャを必要としない場所では「(?:)」を使います。
この問題の場合には、1回もキャプチャを使わずに記述する事が可能です。

と、あるのですが
<\w+(?:\s+[^>]*)*>
でないかと思っています。
\w+はグループ化する必要がそもそもあるのでしょうか?
0018デフォルトの名無しさん2013/04/19(金) 05:28:46.07
<\w+[^>]*>でいいんじゃねーの?
0019デフォルトの名無しさん2013/04/19(金) 11:05:34.33
>>17
これどこの問題?ネットにはドヤ顔で他人に教える素人がいるからそういう類かもな。

>\w+はグループ化する必要がそもそもあるのでしょうか?
ない。
0020デフォルトの名無しさん2013/04/19(金) 14:19:25.61
>>18
属性がある場合、
タグ名と属性の間には1個以上の空白が入るので
\s+[^>]* ですね。
これが0個以上繰り返される為、
(\s+[^>]*)*となります。
で、これをキャプチャしたくないから
(?:\s+[^>]*)* になると思います。

>>19
技術評論社から出ている
正規表現書き方ドリル 初版の
P139 第5章 その4 キャプチャしないグループ化 第3問になります。
テキスト部分は変更しましたが、タグや属性などは変更していません。

と、書いている所で自己解決したかもしれません。
</b>のように終了タグにもキャプチャを使う為に
(?:\w+)としているんだと思います
0021デフォルトの名無しさん2013/04/19(金) 14:30:21.71
ああ、本か。本には誤植とか結構あるからなぁ。
サイトに誤植の正誤を載せてるとこもあるから一応見てみては。

>終了タグにもキャプチャを使う為に

これはないなぁ。 \w+ と (?:\w+) はまったく同じ動作で後者を使う必要が無いからね。
(?:\w+){2} のように後ろに繰り返し指定子が付けば話は別だけどね。
問題の例文でも</b>にはマッチしてないし

>この問題の場合には、1回もキャプチャを使わずに記述する事が可能です。

と書いてあるからね。
0022デフォルトの名無しさん2013/04/19(金) 14:54:40.95
>>17
糞スレあげんなキチガイ
0023デフォルトの名無しさん2013/04/19(金) 18:33:41.02
いやだ
0024デフォルトの名無しさん2013/04/19(金) 22:57:36.36
属性値にだって空白入るし属性同士の間は空白必須じゃないし
問題文通り素直にやったら>>18になると思うが・・・
0025デフォルトの名無しさん2013/04/20(土) 02:11:01.67
17に属性には「>」以外の任意の文字を使えると明記されてるからな
まあそもそも何がやりたいのかよくわからんが
0026デフォルトの名無しさん2013/04/20(土) 03:28:25.83
>>24
いやダメだろ。
タグ名は英単語とされている。
\wは英字以外の文字も含まれる(少なくとも数字、場合によっては他の文字も含まれている可能性がある)
0027デフォルトの名無しさん2013/04/20(土) 08:41:34.24
英単語の部分は\wを使う という方針で教えてる本なんじゃないかな。
俺も人に教えるときは厳密さを捨ててデフォルメしてから教えるから著者の気持ち分かるわ。
恐らく (?: ) の使い方の学習が趣旨なわけで、その目的さえ達成出来れば細かいところは良かったんだろう。

\w+ までカッコで囲ってたのはこの学習の前に 「終了タグにマッチさせる」 という練習をしていて
そのときに \w+ もカッコで囲っていたんだろう。

今回の問題は終了タグにもマッチさせる問題の応用じゃなかろうか。名探偵すぎてゴメン。
0028デフォルトの名無しさん2013/04/20(土) 16:41:55.91
場合によってじゃなく「[英数_]=[0-9a-zA-Z_]」が標準だろ
0029デフォルトの名無しさん2013/04/20(土) 16:56:33.75
>>26は何も間違ってないよ。\wが何にマッチするかはプログラマが任意で変えられる。
0030デフォルトの名無しさん2013/04/20(土) 18:40:30.41
アルファベットの連続性問題もあるし <[:alpha:]+[^>]*> にしとかないとな
0031デフォルトの名無しさん2013/04/20(土) 21:54:20.37
問題の趣旨から言えば \s を使うべきだろうね。
詳説 正規表現では (\s[^>]*)? みたいなのを使ってたなぁ。
>>17の答えでは (?:\s+[^>]*)* を使ってるけど、[^>] はスペースにもマッチするから
実用的にはなんか違和感があるね。
0032デフォルトの名無しさん2013/04/20(土) 22:19:17.77
>>26
そうなの?
<H1>とか今でも普通に見かける気がするけど
0033デフォルトの名無しさん2013/04/20(土) 22:25:36.38
突っ込んだら負けなとこを突っ込んでもしょうがなかろう。
実用的な正規表現じゃなくあくまで練習用の正規表現だ。
0034デフォルトの名無しさん2013/04/21(日) 03:20:24.96
htmlを指定してるわけじゃないんだから
使えるタグなんてそれこそ自由に決められる
0035デフォルトの名無しさん2013/04/21(日) 22:23:26.51
<xxx yyy=>>
はダメでyyy=&amp;gt;としないと駄目だが、
<xxx yyy=">">
は確か良かったよね?w
0036デフォルトの名無しさん2013/04/21(日) 22:50:37.58
ダメ。
0037デフォルトの名無しさん2013/04/24(水) 18:18:51.37
phpなんですが
enarikazukiって文字列にマッチするのを作りたいんですが
testenarikazukwwww→i○
#enarikazuki→×
enarikazukiって→○
enarikazuki→○
みたいに前後に何がついてもいいんですが、前に#がついた場合以外はマッチしないようにするってのはどうすりゃいいんでしょうか?
0038デフォルトの名無しさん2013/04/24(水) 18:47:57.48
日本語間違えました
前に#ついた場合のみマッチしないです
0039デフォルトの名無しさん2013/04/24(水) 20:22:26.80
^[^#]*e.*n.*a.*r.*i.*k.*a.*z.*u.*k.*i
0040372013/04/24(水) 20:29:56.29
すみません、また間違えてたみたいです・・・。
直前に#がついてたらでした
#enarikazuki→×
#wwwenarikazuki→○
0041デフォルトの名無しさん2013/04/24(水) 20:37:11.65
なんてやつだ
0042デフォルトの名無しさん2013/04/24(水) 21:08:41.52
と、と、ととととりあえずおけつち
0043デフォルトの名無しさん2013/04/24(水) 21:31:46.18
マッチとは話ズレるが
([^#]?)enarikazuki
みたいにして()の部分が#ならマッチしなかった事にすりゃいいんじゃね
俺が考えたやり方の方が負荷も少ないと思われる
0044デフォルトの名無しさん2013/04/24(水) 21:45:59.70
(^|[^#])enarikazukiでいいだろアホが
0045デフォルトの名無しさん2013/04/25(木) 02:54:45.77
なんで行頭の#に限定する展開になったの?エスパーなの?
0046デフォルトの名無しさん2013/04/25(木) 02:55:45.53
あっ俺があほだった
0047デフォルトの名無しさん2013/04/25(木) 04:12:06.20
testenarikazukwwww→i にマッチしねえだろ
嘘つきばかりだな
0048デフォルトの名無しさん2013/04/25(木) 09:45:02.49
……要するに、>>37さんが言いたいことは、
testenarikazukiwww→○
#enarikazuki→×
enarikazukiって→○
enarikazuki→○
www#enarikazuki→×
#wwwenarikazuki→○
ってことでいいんだよな?
つまり、「直前の文字が存在する場合それが#以外である」または
「直前の文字が存在しない場合(つまり行頭)」ならマッチするんだよな?
と言うことは>>44さんの ([^#]|^)enarikazuki で正解だろ
0049デフォルトの名無しさん2013/04/25(木) 09:53:12.64
勘違いしてた
行頭=直前に何も無い
って事か
0050デフォルトの名無しさん2013/04/25(木) 13:09:41.15
質問がアレだから読む気すらしないわ。日本語勉強してからこい。
0051デフォルトの名無しさん2013/05/01(水) 15:24:34.56
ここはゴミの隔離とネタ専用のスレだからまともに相手をしようってのが間違い
0052デフォルトの名無しさん2013/05/17(金) 09:23:47.30
m2を�uに変換したいのですが
m2はOKでmm2やcm2やkm2はNGにする方法はどうすればいいでしょうか?
0053522013/05/17(金) 10:45:47.89
すみませんできました
(?<![mck])m2
�u
0054デフォルトの名無しさん2013/05/22(水) 19:29:54.35
正規表現を勉強しようとググってたんですが
よくマッチ、マッチングという言葉が出てきます
このマッチとは、一体どういう意味なのかさっぱり分からないのです
ぐぐってもマッチはマッチだよとしか出て来ません
日本語でお願い出来ますでしょうか?初歩的すぎる事が分からなくてすみません
0055デフォルトの名無しさん2013/05/22(水) 19:59:14.18
スレ立てるまでもない質問はここで 126匹目
http://toro.2ch.net/test/read.cgi/tech/1363522503/
0056デフォルトの名無しさん2013/05/22(水) 23:17:56.95
>>54
お前がどこで正規表現を使おうとしてるのか知らんが、正規表現ってのは「パターンにマッチさせる」ための記法
で、「パターン」も「マッチする」も大まかに言えばカタカナ語の意味のまま
だからマッチの意味が分からないってことは正規表現を使うのに向いてないってことだ
0057デフォルトの名無しさん2013/05/23(木) 05:40:58.66
>>54
「○は△にマッチする」の例をそれなりに見てきた上でそう言ってるのなら、
日本語云々の問題じゃない。(それは逃げの屁理屈に過ぎない)
>>56の通り、脳味噌がそういう論理的思考に全く向いてないってことだ。
プログラミング適性が皆無だから、早く止めた方がいい。
0058デフォルトの名無しさん2013/05/23(木) 06:09:29.12
初心者に丁寧に説明することもできない人たちが、正規表現を使って
実務的なプログラムを書いているのだとしたら、恐ろしいことだね。
0059デフォルトの名無しさん2013/05/23(木) 06:58:37.13
検索したらヒットした のヒットがマッチのことだよ。
0060デフォルトの名無しさん2013/05/23(木) 07:01:34.68
>>58
初心者スレ以外は初心者に丁寧に接する必要なし、が2chの常識。
嫌なら仲良しSNS()にでも行ってくれ。
0061デフォルトの名無しさん2013/05/23(木) 07:19:09.71
>>60
でも、できないんだろ。
0062デフォルトの名無しさん2013/05/23(木) 08:32:36.74
マッチのマーチがあなたの街にマッチする
のマッチだよ
0063デフォルトの名無しさん2013/05/23(木) 10:01:08.14
>>61
いいから涙拭いて諦めろ
0064デフォルトの名無しさん2013/05/23(木) 10:32:57.89
×初心者
○努力を一切しない馬鹿
0065デフォルトの名無しさん2013/05/23(木) 10:42:21.41
マッチ≒合致する
0066デフォルトの名無しさん2013/05/23(木) 10:44:19.23
銀ギラギン、さりげなく・・・
0067デフォルトの名無しさん2013/05/23(木) 11:12:18.61
それはmatchy
0068デフォルトの名無しさん2013/05/23(木) 13:59:06.89
>>65
おお、ありがとうございます!
なるほど、合致ですか、とてもしっくり来ました。
皆さんの手をわずらわせて、すみませんでした。
0069デフォルトの名無しさん2013/05/23(木) 14:01:23.64
>>59
よくよく考えれば、そういうことですよね
マッチ、一致ですよね
なぜ解らなかったんでしょう、パニクっていたかもしれません;
0070デフォルトの名無しさん2013/05/23(木) 16:44:25.36
>>69
ここが重複したネタスレだって気付かないくらいだから
そんなことも気付かないんだろ
0071デフォルトの名無しさん2013/05/23(木) 16:45:45.01
>>70
おまえあれか、れぎゅらーなんとかのきちがいか。
0072デフォルトの名無しさん2013/05/23(木) 16:46:15.70
ここはネタスレであって本スレではありません
ネタ回答ではなく正式な回答が欲しい場合は以下のスレで質問してください

※誘導※

Regular Expression(正規表現) Part11
http://toro.2ch.net/test/read.cgi/tech/1362913813/
0073デフォルトの名無しさん2013/05/23(木) 16:58:22.83
↑隔離スレ

一般の方は近づかないで下さい。
0074デフォルトの名無しさん2013/05/23(木) 17:00:56.13
なんだ、質問しようと思ったらこっちじゃないのか。
0075デフォルトの名無しさん2013/05/23(木) 17:11:14.54
>>74
こっちは馬鹿が後から立てた重複スレ
向こうのほうが本スレ
0076デフォルトの名無しさん2013/05/24(金) 08:25:41.01
性器表現
0077デフォルトの名無しさん2013/09/02(月) 21:01:46.32
m9(^Д^)プギャー
0078デフォルトの名無しさん2013/09/04(水) 15:18:08.27
sage が入っていない
ってどう書く?
0079デフォルトの名無しさん2013/09/04(水) 22:01:50.76
>>78
ネタスレで質問してるヴァカ乙wwwww
0080デフォルトの名無しさん2013/09/04(水) 22:20:50.48
>>78
参考 ttp://www.din.or.jp/~ohzaki/regex.htm
0081デフォルトの名無しさん2013/09/05(木) 00:20:14.25
>>78
消えろゴミ
0082デフォルトの名無しさん2013/09/05(木) 04:12:51.12
>>78
お前みたいな奴が重複糞スレの乱立を助長してるんだろうが。

糞スレ立てる奴もお前みたいに調子に乗って書き込む奴もどっちも迷惑だからさっさと回線切れ。
0083デフォルトの名無しさん2013/09/05(木) 05:27:58.06
>>79=81=82
さっさと精神科にでも行け
0084デフォルトの名無しさん2013/09/05(木) 05:45:30.49
.*(?<!sage).*
こんな感じ?
0085デフォルトの名無しさん2013/09/05(木) 07:26:27.57
>>84って頭悪そう。
0086デフォルトの名無しさん2013/09/05(木) 09:56:38.18
釣り質問に回答や煽りレスつけて楽しいの?
0087デフォルトの名無しさん2013/09/05(木) 10:37:42.84
やっと釣れた!
0088デフォルトの名無しさん2013/09/05(木) 22:00:02.77
どうもググり方が下手なので教えてください

炒り豆が食べたい。

こういう文章の末尾の”。”だけ除去したいのですが
$。でも 。$ でもヒットしません

正規表現の使えるテキストエディタで以下のようにしています
検索文字列 。$
置換後文字列 空白
0089デフォルトの名無しさん2013/09/05(木) 22:52:55.98
>>88
> 正規表現の使えるテキストエディタ
なぜそこで具体的なエディタの名称を出さないのか、心底理解に苦しむ。
0090デフォルトの名無しさん2013/09/06(金) 00:09:34.28
>>88
俺の正規表現の使えるテキストエディタで出来たよ。
0091デフォルトの名無しさん2013/09/06(金) 00:43:52.62
>>89-90
gPadというものです
editorによって出来る出来ないとかあるのですか?!
鬼車とか使ってるのはみんな同じだとorz
0092デフォルトの名無しさん2013/09/06(金) 01:02:39.01
真魚というエディターを使ったところ80の方法で出来ました
gPadはポンコツですね
0093デフォルトの名無しさん2013/09/06(金) 01:23:57.70
gPadでも出来たが?
正規表現をOFFにでもしてたんじゃねぇーの
0094デフォルトの名無しさん2013/09/06(金) 05:59:17.99
多分>>93が図星だな
まぁ初心者にはよくあること
0095デフォルトの名無しさん2013/09/06(金) 06:34:39.09
>>78
[^(.*sage.*)]

こういう書式っていいのかな
0096デフォルトの名無しさん2013/09/06(金) 21:26:24.25
直近30レス見たけどここって基地害しかいないの?
0097デフォルトの名無しさん2013/09/06(金) 22:34:21.22
3月位まではマトモだったけど
それ以降は変なのが居着いちゃって
荒れ放題なんだよ
0098デフォルトの名無しさん2013/09/24(火) 00:35:49.42
レス10個くらい消えた?
0099デフォルトの名無しさん2013/09/25(水) 14:27:36.67
重複スレなんだからスレごと消さなきゃダメだろ
それとも糞スレ乱立を運営が推奨してるのか?
0100デフォルトの名無しさん2013/12/17(火) 02:57:22.80
このスレは Part12 になります。

前スレ

Regular Expression(正規表現) Part11
http://toro.2ch.net/test/read.cgi/tech/1362913813/
0101デフォルトの名無しさん2013/12/17(火) 15:16:25.83
重複クソスレ終了
■ このスレッドは過去ログ倉庫に格納されています