1read 100read
2013年01月プログラム93: 正規表現 Part10 (494) TOP カテ一覧 スレ一覧 2ch元 削除依頼
【.cmd】 バッチファイルスクリプト %9 【.bat】 (528)
くだすれC++Builder(超初心者用)その5 (331)
Perlについての質問箱 57箱目 (373)
MFC、Win32++を超えるライブラリを作るスレ (962)
Win32API質問箱 Build113 (377)
【信者】C++の問題点【アンチ】 (379)

正規表現 Part10


1 :2012/06/23 〜 最終レス :2013/01/09
正規表現(Regular Expression)スレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
正規表現 Part9
http://toro.2ch.net/test/read.cgi/tech/1323566370/
天ぷら等2以降

2 :
◆関連サイト
正規表現メモ
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/

3 :
◆関連スレ
[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/

4 :
スルーされにくい質問のテンプレと例
●正規表現の使用環境
Java1.5
●検索か置換か?
検索
●説明
各行の1番目のAまでを検索したい
●対象データ
ABCA
BCAA
CABA
●希望する結果
ABCA
^
BCAA
^^^
CABA
^^
※ ^ はアンダーラインだそうな ^^;

5 :
早すぎワロタ

6 :
粘着が飽きるまで放置しとけばいいのに

7 :
このスレッドは天才pンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
                  京都大学霊長類研究所

8 :
「正規表現が進化しない」ってなかなか斬新な表現だな。
「整数が進化しない」と言ってMSゴシック全角数字の汚さをdisるようなもんか

9 :
正規表現ってパッと見じゃあ理解できない魔法の記号だからな。

10 :
おれもそれを痛感する。なるべく正規表現つかいたくない

11 :
逆にぱっと見てだいたい何やってるかわかるのが正規表現だよ。
正確に理解するには罠がたくさんあるけどな。

12 :
正規表現を理解できないのに、プログラミング言語が理解できるはずがない。
本人がそう思ってるとしたら、理解したつもり、ってだけだ。

13 :

      ,一-、
     / ̄ l |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ■■-っ < んなーこたーない
    ´∀`/    \__________
   __/|Y/\
 Ё|__ | /  |
     | У  |

14 :
1行にかこうとするのが不自然だ。どの部分で失敗したかわかりにくい

15 :
>>1

16 :
$url の末尾に「/(スラッシュ)」が入っている場合と、入っていない場合があります。
入っている場合には自動でそのスラッシュをPHPの正規表現を使用して除去する為に
下記コードを書いたのですがエラーが出ます。
どこに問題があるのでしょうか?
//$url = "http://unnko.com/111";
$url = "http://unnko.com/111/"; //←この場合に末尾の / を除去したい
$url = preg_replace("/^(.+?)[/]$/","\\1",$url);
Warning (2): preg_replace() [function.preg-replace]: Unknown modifier ']'

17 :
つ "#^(.+?)[/]$#"
http://www.php.net/manual/ja/regexp.reference.delimiters.php

18 :
>>17
ありがとうございました。
因みに、 \\1 の部分はいつも決まり文句で書いているのですが
正直あまり意味が分かりません。
これって何を意味してるのでしょうか?
そもそも、>>16で記述したコードの場合
抽出された結果は、左辺( $url )に代入される為
\\1 なんてそもそもいらない気がしております。

19 :
マニュアル読め。

20 :
教えてやろうと思ったけどやめた
苦しめ
時間を無駄にしろ
俺からレスがもらえたら削減できたはずの時間
無駄に悩め

21 :
a = "http://www.google.co.jp/"
a.sub!(/\/$/,"")
p a
正規表現て初心者が書くからカオスになるんだろうな

>$url = preg_replace("/^(.+?)[/]$/","\\1",$url);
バカかこれ

22 :
\\1 
これってどういう意味?

23 :
後方参照だって教えただろ初心者はまじでしね
p "aaabbbccc".sub(/(bbb)/ , '__\\1__')
# ↓
#
# "aaa__bbb__ccc"

24 :
>>23
thank you .
by the way i saw you at prgramer's board, you know?

25 :
いいえ
教えてないのに「教えただろ」
とかいってくる奴の真似をしてみただけ

26 :
教えてください。複数行からのある文字列を含んだ
行の検索の記述方法です
●正規表現の使用環境
Java7
●検索か置換か?
検索
●説明
複数ある文字行からの検索で
一行中に[A]and[C]を含む行を抽出する方法
一行中に[K]or[S]を含む行を抽出する方法

●対象データ
ABCDEFG
HIJKLMN
OPQRSTU
●希望する結果
ABCDEFG (A and C)
HIJKLMN と OPQRSTU  (K or S)


27 :
(.*A.*C.*|.*C.*A.*)
([KS]+)

28 :
>>27
うあ!早々にありがとうございます。
あまえついでに検索対象が「単語」になった場合はどうしたら良いでしょうか?

●正規表現の使用環境
Java7
●検索か置換か?
検索
●説明
複数ある文字行からの検索で【単語A】【単語B】をand/or検出
●対象データ
むかしむかし、おじいさんは山に芝刈りに、おばあさんは川に洗濯に行きました(改行)浦島太郎はかめにのって海に出て行きました(改行)
そうすると、おじいさんは「わたしは小さなつづらでよい」といいました(改行)
●希望する結果
「おじいさん」and「おばあさん」
むかしむかし、おじいさんは山に芝刈りに、おばあさんは川に洗濯に行きました(改行)
「おじいさん」or 「おばあさん」
むかしむかし、おじいさんは山に芝刈りに、おばあさんは川に洗濯に行きました(改行)そうすると、おじいさんは「わたしは小さなつづらでよい」といいました(改行)


29 :
条件後出し禁止

30 :
(.*おじいさん.*おばあさん.*|.*おばあさん.*おじいさん.*)
(おじいさん|おばあさん)

31 :
条件が複数になったときとかを考えると、
プログラム側でどんどん分割しちゃった方が実用的な気がする。

32 :
>>29
ごめんなさい

33 :
>>30
ありがとうございました。商品の名前の正式名と略名の両方で書かれた
論文があったので、助かりました

34 :
このスレいつからこんなレベル低くなったんだ

35 :
性器表現とか言い始めたあたりから

36 :
べつにええやん
# 商品名の書かれた論文をJavaで検索ってのがちょっと気になる。

37 :
好きとか嫌いとか言い出したあたりから

38 :
指定されたファイルパスの拡張子を正規表現で変更しようとしています。
下記の場合、具体的には *.csv という拡張子を *.txt に置き換える為に
正規表現を書いたところ

string basic_path = @"C:\Users\YamadaTarou\Desktop\20120626_155147.csv";
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@".*\.(?)");
string replaced_path = r.Replace(basic_path, "txt");

parsing ".*\.(?)" - Quantifier {x,y} following nothing.
というエラーが出ちゃいます。 どこに問題があるのでしょうか?

39 :
?は{0,1}
?の前に正規表現がない。
?が何もないものの後ろにある = ? following nothing. = Q. {0,1} following nothing.
?の代わりにcsvじゃまずいのか?

40 :
>>39
指定される元のファイルが
CSV だったり TSV である可能性がある為、決め打ちが出来ません。

41 :
http://msdn.microsoft.com/ja-jp/library/dsy130b4.aspx
ここの「省略可能な量指定子または代替構成体によるバックトラッキング」に書いてあるみたいに
.NETの正規表現エンジンってアトミック後読みとかしないと.*で全部調べるわけ?
.*?eとかなってたら普通はeを探すと思うんだけど

42 :
つ ".*¥.(.sv)$"
つ ".*¥.(...)$"
つ ".*¥.([^.]*)$"

43 :
^((?>[^.]+)\.)+(?>[^.]+)$
ぐらいにしないと無駄なバックトラックが入ってしまい効率が落ちるということになるのか・・・?
効率良く処理するには後ろから読んでいって欲しいところだがそんな制御は無理か・・・?
正規表現ってこんな訳のわからないものだったのか・・・?

44 :
その方がよっぽど訳わからん

45 :
ふくろう本を読め

46 :
まあ適当でいいか
O(n^2)とかにならなければ気にすることないよな

47 :
>>42
(^^)ありがとうございます。
早速、下記コードを記述したところ
string basic_path = @"C:\Users\YamadaTarou\Desktop\20120626_155147.csv";
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@".*\.([^.]*)");
string replaced_path = r.Replace(basic_path, "txt");
replaced_path  には、 "C:\Users\YamadaTarou\Desktop\20120626_155147.txt"
が入る事を期待していたのですが
replaced_path  には、 "txt だけ入ります。
うーん。あと一歩。

48 :
.*消せ

49 :
>>48
サンキュー
string basic_path = @"C:\Users\YamadaTarou\Desktop\20120626_155147.csv";
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@"\.([^.]*)");
string replaced_path = r.Replace(basic_path, ".txt");

で出来ました。

50 :
5000円出してふくろう本買ってきたわ
高すぎるだろ・・・

51 :
お前の脳みそに
皺が1本増えてよかったじゃないか。

52 :
大学帽かぶってるやつか?

53 :
フクロウ博士ではないな

54 :
たま ぶくろう

55 :
玉袋寛子っていまなにしてんのかな

56 :
本買って勉強するのもいいと思うけど、
結局は実際の業務でgrep検索や正規表現で得たい結果を学んでいく方がいいと思う。

57 :
実地独学だけで進むと、変な勘違いや基礎や初歩の欠落を抱えたまま
それに気付かず進んでしまう可能性もあるけどね

58 :
URL文字列から次の事をしたいんですけど、
正規表現がどうもまずいみたいです。
また、ループの中でどう <last-string> でグループ化した値を参照したら良いかわかりません。
ご伝授下さい。
string test = "http://hogehoge.com/123.pdf"; //123.pdf をとりたい
//string test = "http://hogehoge.com/123.html"; 123.html をとりたい
//string test = "http://hogehoge.com/123.doc"; 123.doc をとりたい
//string test = "http://hogehoge.com/"; ""(空文字) をとりたい
//string test = "http://hogehoge.com"; ""(空文字) をとりたい
Regex regex = new System.Text.RegularExpressions.Regex(@"^.*\/(?<last-string>[a-zA-Z0-9.].*)$");
MatchCollection matchCol = regex.Matches(test);
for(int i = 0; i < matchCol.Count; i++)
{
//よくわからなん。
     //string gotten_string = matchCol[i].Value;
}

59 :
細かくは試してないけど ^(.*//.*/.*)([^/]*)$ とかで行けそうな予感。
各言語/ライブラリの使い方については知らんけど。

60 :
あ、だめだ。ごめん>59は忘れて

61 :
var pattern = "http://.*/(.*)$"
var hostOnly = "http://[^/]+$"
patternにマッチしたらOKで
マッチせずhostOnlyにマッチしたら空文字列でいいんじゃない

62 :
>>58
string test = "http://hogehoge.com/123.pdf";
Regex regex = new System.Text.RegularExpressions.Regex(@"^.*\/(?<last_string>[a-zA-Z0-9]+\..*)$");
MatchCollection matchCol = regex.Matches(test);
foreach (Match m in matchCol)
{
GroupCollection groups = m.Groups;
var gotten_string = groups[1];
}
まず正規表現の文字列見直せ。 [a-zA-Z0-9.].* だと 英数字か.で始まる文字列。
あと、どこ見たのか知らんけど、これしきの要件でなんで使い方も分からんグループ化など使うんだ。
http://msdn.microsoft.com/ja-jp/library/bs2twtah(v=vs.100).aspx みなおせ。 名前に-を入れるな 違う意味だ。

63 :
var gotten_string = test.Substring(test.LastIndexOf('/')+1);
これでいいんじゃねーの?

64 :
ふくろう本読んだらいきなり完璧な正規表現書けるようになったわ
1日で必要なとこ全部読めたし超読みやすい
神すぎる

65 :
>>63
全部正規表現でやりたいのですたい。

66 :
シンプルな正規表現は最適化が効いて高速に動く
プログラムで組み立てたほうが分かりやすい
なんでも正規表現で書こうとするのは愚か

67 :
プログラムで組み立てた方が分かりやすいのは確か。
だけど正規表現を華麗に使いこなせる様になりたいの。

68 :
>>62
ありがとうございます。
流石にこの程度の物に対して正規表現を使うのは大げさな気がしました。

69 :
>>63
流石になんでもかんでも正規表現をやるのはどうかと思いました。
その様にプログラムを今回は使う事にします。

70 :
>>66-67
要求としてはどっちも正しいよな、ほんと。

71 :
数値比較を正規表現だけでやることになって、たった4桁なのに泣きそう。

72 :
簡単じゃねーか

73 :
あら、そうなのか。調べても分からんかった。

74 :
せめてググレよw

75 :
正規表現だけで、二つの並んだ四桁の数字の大小比較をするのは、
プログラム生成するしかないような巨大な正規表現になる。

76 :
>>74
ググったんだけど、\d+とか[0-9]+とかしか出てこなくて。
>>75
今回の為だけに、正規表現を生成するプログラムを作ろうかとまで思ったw

77 :
^.+(?=[wWwW][  。]*(?:<br>|$))
2chブラウザで芝をNGする正規表現なのですが、いくつか分からない場所があります
?=や?:はどういった意味なのでしょうか?
調べてみたのですが、うまく出てきませんでした
また、^.+や.+$で挟む必要はあるのでしょうか?
書いてあるほうが重畳かと思いますが、書いてない場合も見受けられます
どちらでもいいのでしょうか?
また、これでは「そうかwwwwよくわかったわ」のように真ん中に芝が入っているレスはNGできません
ワールドワイドウェブは保持しつつも芝を完全にNGする書き方はないでしょうか?
よろしくお願いします。

78 :
>>1

79 :
このスレはテキストエディタでの正規表現を質問してもいいですか?

80 :
どうぞどうぞ

81 :
なんでダメだと思ったの?
スレタイを10回嫁

82 :
>>81
プログラム板なのでプログラム関係の質問だけしかしてはいけないのかと思いまして一応確認を取らさせていただきました。

では失礼します。
テキストエディタ「Apsaly」を使用しています。
test1やtest2などの文字列を検索して、
test6、test7のように決めた分(今は+5)だけ数字の値を増やしながら置換することは出来ますか?

83 :
わろた
自分でテキストエディタ作ってんじゃないのか

84 :
ごめんなさい
やっぱり駄目でしたか

85 :
痴漢は正規表現の仕事じゃねーし。
MikoScript書け。

86 :
痴漢は性器の・・・

87 :
>>85
すいません
痴漢に多くを求めてしまいました
MikoScriptなんてのがあったんですね
これなら何とかできそうです
ありがとうございました

88 :
>>81
>>84
俺はこの流れのほうがワロタだわ

>プログラム板なのでプログラム関係の質問だけしかしてはいけないのかと思いまして一応確認を取らさせていただきました。
誰が決めたの?
つうか答えられる奴が少ないから答えが返ってこないだけ

89 :
どう考えてもスレ違い

90 :
スレ違いつうかApsaly用の質問スレなんてないし
IDE + テキストエディタ系の専用質問スレがあったほうがいいんじゃね

91 :
Apsalyは公式サイトに掲示板ないのに、ソフトウェア板のスレまで閑古鳥が鳴いてるという不人気エディタなのに、
ム板で普通に会話が成立しているのに驚いた
もしかしてMikoScriptって意外と使ってる人多いの?

92 :
/A(?:(?(R)b|c)|(?R))+/
これって何にヒットするんです?
AbとかAcなんかじゃヒットしない
ホントこれだけが正規表現の中で動きが全くわからぬ

93 :
PCREだと
(?(R)b|c) が 再帰式中ではb そうでなければ c なので  
Ac+ とかAAbとかが該当するんだけど環境は?

94 :
(?(R)って何?
PCREってほんとにPerl互換なの? そんな機能知らないわよ

95 :
>>94
http://perldoc.jp/docs/perl/5.14.1/perlre.pod#Extended32Patterns
> (?(condition)yes-pattern|no-pattern)
> (?(condition)yes-pattern)
> (condition) はかっこでくるまれた数値(対応するかっこ対が マッOしたときに有効)、
> 先読み/後読み/ゼロ幅で評価される言明、角かっこ もしくはシングルクォートで
> くるまれた名前(その名前のグループが マッOしたときに有効)、
> 特殊なシンボル (R) (再帰または eval 内で 評価されているときに真)のいずれかです。
> (R)
> 式が再帰の中で評価されているかどうかを調べます。

96 :
なるほど・・・意味が分からん

97 :
最後に○○がつくけどマッO文字列に含めないってどうすればいいんでしったっけ

98 :
先読みのことかな?
あいう○○
う(?=○○)
後ろに○○がつく「う」にマッチ

99 :
Aは(.+)
(.+)はB
という2つの文から
「AはB」
という文を作るにはどうすればいいですか?

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
C言語なら俺に聞け(入門編)Part 111 (1001)
懐かしきベーマガの面白かった投稿プログラムを語る (774)
Pythonのお勉強 Part47 (919)
HSPプログラムコンテスト2011【part 2】 (452)
JavaScriptは消滅すべきだったよな (470)
日本語プログラミング言語『なでしこ』スレ5 (827)
--log9.info------------------
ゲーセンにほぼ毎日いる連中についてpart3 (483)
ゲーセンで他人をウォッチする基地外カス人間 (237)
八王子のメダル事情 (979)
メダル・プライズ自治スレ2 (837)
ゲーセンと2ちゃんしかやることないのかよ (267)
貯メダルが2万枚とか十万枚あるやつってなんなの? (739)
【MH】モンスターハンター メダル【モンハン】 (208)
G1-ホースパークJM 3R目 (324)
マリオパーティふしぎのコロコロキャッチャーpart4 (689)
糞あんは人間のクズです。 (387)
ダイノキング3 (241)
【秋葉原】アキバギルド【店員禁止】11ハンド目 (690)
UFOキャッチャー&プライズゲーム総合スレ part.149 (603)
メダルこじきのガリレオ日記★ (566)
パノラマファンタジー (578)
北海道 UFOキャッチャー、プライズゲーム総合スレ (395)
--log55.com------------------
【台湾】 - 台北ナビ 【Part4】
旧日本軍による重慶大空襲 南京大虐殺
台湾人の98%が中国人と同じ『 漢民族 』
ジェリー・イェン【言承旭】Part218
何故朝鮮人は台湾板で必死に工作するのか? ★2
日本人が台湾人に見習うべきところを考えるスレ
アジアの平和を乱す国および地域
ヒマな時はバカなネトウヨを煽って遊ぼうぜ