1 名前:デフォルトの名無しさん [2012/06/23(土) 01:38:40.22 ] 正規表現(Regular Expression)スレです。 質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。 正規表現 Part9 toro.2ch.net/test/read.cgi/tech/1323566370/ 天ぷら等2以降
2 名前:デフォルトの名無しさん [2012/06/23(土) 01:40:05.80 ] ◆関連サイト 正規表現メモ www.kt.rim.or.jp/~kbk/regex/regex.html Perl正規表現雑技 www.din.or.jp/~ohzaki/regex.htm Regular Expression(Riue ちゃんの正規表現講座) www.sixnine.net/regexp/ 正規表現パズル www.geocities.jp/oraclesqlpuzzle/regex/ 詳説 正規表現 www.oreilly.co.jp/books/4873111307/ 正規表現プログラミングFAQ capslockabcjp.kitunebi.com/faq.html JScript 正規表現の概説 msdn.microsoft.com/library/ja/script56/html/js56reconIntroductionToRegularExpressions.asp .NET Framework 正規表現言語要素 msdn.microsoft.com/library/ja/cpgenref/html/cpconregularexpressionslanguageelements.asp 【 初心者 】 正規表現 【 入門 】 funcchan.blog16.fc2.com/
3 名前:デフォルトの名無しさん [2012/06/23(土) 01:40:50.29 ] ◆関連スレ [UNIX板] 正規表現 pc12.2ch.net/test/read.cgi/unix/1039165754/ [WebProg] 正規表現道場 pc11.2ch.net/test/read.cgi/php/1168450843/ ◆前スレ [1] pc8.2ch.net/test/read.cgi/tech/1062152374/ [2] pc8.2ch.net/test/read.cgi/tech/1131028296/ [3] pc11.2ch.net/test/read.cgi/tech/1156413899/ [4] pc11.2ch.net/test/read.cgi/tech/1186030400/ [5] pc12.2ch.net/test/read.cgi/tech/1212498448/ [6] pc12.2ch.net/test/read.cgi/tech/1241537764/ [7] hibari.2ch.net/test/read.cgi/tech/1268979408/ [8] hibari.2ch.net/test/read.cgi/tech/1301067486/ [9] toro.2ch.net/test/read.cgi/tech/1323566370/
4 名前:デフォルトの名無しさん [2012/06/23(土) 01:43:14.23 ] スルーされにくい質問のテンプレと例 ●正規表現の使用環境 Java1.5 ●検索か置換か? 検索 ●説明 各行の1番目のAまでを検索したい ●対象データ ABCA BCAA CABA ●希望する結果 ABCA ^ BCAA ^^^ CABA ^^ ※ ^ はアンダーラインだそうな ^^;
5 名前:デフォルトの名無しさん [2012/06/23(土) 01:43:44.50 ] 早すぎワロタ
6 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 03:33:17.28 ] 粘着が飽きるまで放置しとけばいいのに
7 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 11:38:03.13 ] このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
8 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 14:13:09.61 ] 「正規表現が進化しない」ってなかなか斬新な表現だな。 「整数が進化しない」と言ってMSゴシック全角数字の汚さをdisるようなもんか
9 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 15:12:58.81 ] 正規表現ってパッと見じゃあ理解できない魔法の記号だからな。
10 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 17:16:49.40 ] おれもそれを痛感する。なるべく正規表現つかいたくない
11 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 17:34:40.59 ] 逆にぱっと見てだいたい何やってるかわかるのが正規表現だよ。 正確に理解するには罠がたくさんあるけどな。
12 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 18:04:03.08 ] 正規表現を理解できないのに、プログラミング言語が理解できるはずがない。 本人がそう思ってるとしたら、理解したつもり、ってだけだ。
13 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 18:14:44.85 ] ,一-、 / ̄ l | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ■■-っ < んなーこたーない ´∀`/ \__________ __/|Y/\ Ё|__ | / | | У |
14 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 18:16:35.42 ] 1行にかこうとするのが不自然だ。どの部分で失敗したかわかりにくい
15 名前:デフォルトの名無しさん [2012/06/23(土) 18:41:58.15 ] >>1 乙
16 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 20:53:03.91 ] $url の末尾に「/(スラッシュ)」が入っている場合と、入っていない場合があります。 入っている場合には自動でそのスラッシュをPHPの正規表現を使用して除去する為に 下記コードを書いたのですがエラーが出ます。 どこに問題があるのでしょうか? //$url = "unnko.com/111 "; $url = "unnko.com/111/ "; //←この場合に末尾の / を除去したい $url = preg_replace("/^(.+?)[/]$/","\\1",$url); Warning (2): preg_replace() [function.preg-replace]: Unknown modifier ']'
17 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 21:09:17.95 ] つ "#^(.+?)[/]$#" www.php.net/manual/ja/regexp.reference.delimiters.php
18 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 21:23:01.79 ] >>17 ありがとうございました。 因みに、 \\1 の部分はいつも決まり文句で書いているのですが 正直あまり意味が分かりません。 これって何を意味してるのでしょうか? そもそも、>>16 で記述したコードの場合 抽出された結果は、左辺( $url )に代入される為 \\1 なんてそもそもいらない気がしております。
19 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 21:26:54.74 ] マニュアル読め。
20 名前:uy mailto:sage [2012/06/23(土) 23:00:10.02 ] 教えてやろうと思ったけどやめた 苦しめ 時間を無駄にしろ 俺からレスがもらえたら削減できたはずの時間 無駄に悩め
21 名前:uy mailto:sage [2012/06/23(土) 23:16:07.25 ] a = "www.google.co.jp/ " a.sub!(/\/$/,"") p a 正規表現て初心者が書くからカオスになるんだろうな >$url = preg_replace("/^(.+?)[/]$/","\\1",$url); バカかこれ
22 名前:デフォルトの名無しさん mailto:sage [2012/06/24(日) 19:21:57.40 ] \\1 これってどういう意味?
23 名前:uy mailto:sage [2012/06/24(日) 20:35:56.27 ] 後方参照だって教えただろ初心者はまじでしね p "aaabbbccc".sub(/(bbb)/ , '__\\1__') # ↓ # # "aaa__bbb__ccc"
24 名前:デフォルトの名無しさん mailto:sage [2012/06/24(日) 20:56:13.56 ] >>23 thank you . by the way i saw you at prgramer's board, you know?
25 名前:uy mailto:sage [2012/06/24(日) 23:55:43.66 ] いいえ 教えてないのに「教えただろ」 とかいってくる奴の真似をしてみただけ
26 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 08:00:30.81 ] 教えてください。複数行からのある文字列を含んだ 行の検索の記述方法です ●正規表現の使用環境 Java7 ●検索か置換か? 検索 ●説明 複数ある文字行からの検索で 一行中に[A]and[C]を含む行を抽出する方法 一行中に[K]or[S]を含む行を抽出する方法 ●対象データ ABCDEFG HIJKLMN OPQRSTU ●希望する結果 ABCDEFG (A and C) HIJKLMN と OPQRSTU (K or S)
27 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 08:47:02.57 ] (.*A.*C.*|.*C.*A.*) ([KS]+)
28 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 09:06:15.79 ] >>27 うあ!早々にありがとうございます。 あまえついでに検索対象が「単語」になった場合はどうしたら良いでしょうか? ●正規表現の使用環境 Java7 ●検索か置換か? 検索 ●説明 複数ある文字行からの検索で【単語A】【単語B】をand/or検出 ●対象データ むかしむかし、おじいさんは山に芝刈りに、おばあさんは川に洗濯に行きました(改行)浦島太郎はかめにのって海に出て行きました(改行) そうすると、おじいさんは「わたしは小さなつづらでよい」といいました(改行) ●希望する結果 「おじいさん」and「おばあさん」 むかしむかし、おじいさんは山に芝刈りに、おばあさんは川に洗濯に行きました(改行) 「おじいさん」or 「おばあさん」 むかしむかし、おじいさんは山に芝刈りに、おばあさんは川に洗濯に行きました(改行)そうすると、おじいさんは「わたしは小さなつづらでよい」といいました(改行)
29 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 09:08:42.34 ] 条件後出し禁止
30 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 09:11:08.50 ] (.*おじいさん.*おばあさん.*|.*おばあさん.*おじいさん.*) (おじいさん|おばあさん)
31 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 10:14:00.52 ] 条件が複数になったときとかを考えると、 プログラム側でどんどん分割しちゃった方が実用的な気がする。
32 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 10:41:47.04 ] >>29 ごめんなさい
33 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 10:42:48.54 ] >>30 ありがとうございました。商品の名前の正式名と略名の両方で書かれた 論文があったので、助かりました
34 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 11:43:15.33 ] このスレいつからこんなレベル低くなったんだ
35 名前:デフォルトの名無しさん [2012/06/25(月) 11:50:44.25 ] 性器表現とか言い始めたあたりから
36 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 12:28:40.41 ] べつにええやん # 商品名の書かれた論文をJavaで検索ってのがちょっと気になる。
37 名前:デフォルトの名無しさん mailto:sage [2012/06/25(月) 12:31:08.18 ] 好きとか嫌いとか言い出したあたりから
38 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 17:37:34.04 ] 指定されたファイルパスの拡張子を正規表現で変更しようとしています。 下記の場合、具体的には *.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 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 18:09:02.07 ] ?は{0,1} ?の前に正規表現がない。 ?が何もないものの後ろにある = ? following nothing. = Q. {0,1} following nothing. ?の代わりにcsvじゃまずいのか?
40 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 18:14:12.19 ] >>39 指定される元のファイルが CSV だったり TSV である可能性がある為、決め打ちが出来ません。
41 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 18:34:15.41 ] msdn.microsoft.com/ja-jp/library/dsy130b4.aspx ここの「省略可能な量指定子または代替構成体によるバックトラッキング」に書いてあるみたいに .NETの正規表現エンジンってアトミック後読みとかしないと.*で全部調べるわけ? .*?eとかなってたら普通はeを探すと思うんだけど
42 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 18:37:08.80 ] つ ".*¥.(.sv)$" つ ".*¥.(...)$" つ ".*¥.([^.]*)$"
43 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 19:03:53.51 ] ^((?>[^.]+)\.)+(?>[^.]+)$ ぐらいにしないと無駄なバックトラックが入ってしまい効率が落ちるということになるのか・・・? 効率良く処理するには後ろから読んでいって欲しいところだがそんな制御は無理か・・・? 正規表現ってこんな訳のわからないものだったのか・・・?
44 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 19:22:18.64 ] その方がよっぽど訳わからん
45 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 19:26:56.75 ] ふくろう本を読め
46 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 19:30:16.68 ] まあ適当でいいか O(n^2)とかにならなければ気にすることないよな
47 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 21:27:20.79 ] >>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 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 21:36:50.81 ] .*消せ
49 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 21:47:08.01 ] >>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 名前:デフォルトの名無しさん mailto:sage [2012/06/27(水) 13:19:26.92 ] 5000円出してふくろう本買ってきたわ 高すぎるだろ・・・
51 名前:デフォルトの名無しさん mailto:sage [2012/06/27(水) 14:05:27.11 ] お前の脳みそに 皺が1本増えてよかったじゃないか。
52 名前:デフォルトの名無しさん mailto:sage [2012/06/27(水) 17:00:40.16 ] 大学帽かぶってるやつか?
53 名前:デフォルトの名無しさん mailto:sage [2012/06/27(水) 17:06:52.63 ] フクロウ博士ではないな
54 名前:デフォルトの名無しさん mailto:sage [2012/06/27(水) 17:27:21.16 ] たま ぶくろう
55 名前:デフォルトの名無しさん mailto:sage [2012/06/27(水) 17:42:19.23 ] 玉袋寛子っていまなにしてんのかな
56 名前:デフォルトの名無しさん mailto:sage [2012/06/27(水) 20:40:42.70 ] 本買って勉強するのもいいと思うけど、 結局は実際の業務でgrep検索や正規表現で得たい結果を学んでいく方がいいと思う。
57 名前:デフォルトの名無しさん mailto:sage [2012/06/27(水) 21:14:27.90 ] 実地独学だけで進むと、変な勘違いや基礎や初歩の欠落を抱えたまま それに気付かず進んでしまう可能性もあるけどね
58 名前:デフォルトの名無しさん mailto:sage [2012/06/27(水) 23:17:21.48 ] URL文字列から次の事をしたいんですけど、 正規表現がどうもまずいみたいです。 また、ループの中でどう <last-string> でグループ化した値を参照したら良いかわかりません。 ご伝授下さい。 string test = "hogehoge.com/123.pdf "; //123.pdf をとりたい //string test = "hogehoge.com/123.html "; 123.html をとりたい //string test = "hogehoge.com/123.doc "; 123.doc をとりたい //string test = "hogehoge.com/ "; ""(空文字) をとりたい //string test = "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 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 01:22:43.03 ] 細かくは試してないけど ^(.*//.*/.*)([^/]*)$ とかで行けそうな予感。 各言語/ライブラリの使い方については知らんけど。
60 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 01:43:03.32 ] あ、だめだ。ごめん>59は忘れて
61 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 03:31:36.63 ] var pattern = ".*/ (.*)$" var hostOnly = "[^/]+$ " patternにマッチしたらOKで マッチせずhostOnlyにマッチしたら空文字列でいいんじゃない
62 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 09:24:52.19 ] >>58 string test = "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.].* だと 英数字か.で始まる文字列。 あと、どこ見たのか知らんけど、これしきの要件でなんで使い方も分からんグループ化など使うんだ。 msdn.microsoft.com/ja-jp/library/bs2twtah (v=vs.100).aspx みなおせ。 名前に-を入れるな 違う意味だ。
63 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 09:38:30.70 ] var gotten_string = test.Substring(test.LastIndexOf('/')+1); これでいいんじゃねーの?
64 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 15:36:00.82 ] ふくろう本読んだらいきなり完璧な正規表現書けるようになったわ 1日で必要なとこ全部読めたし超読みやすい 神すぎる
65 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 16:37:41.17 ] >>63 全部正規表現でやりたいのですたい。
66 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 17:08:32.69 ] シンプルな正規表現は最適化が効いて高速に動く プログラムで組み立てたほうが分かりやすい なんでも正規表現で書こうとするのは愚か
67 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 17:23:55.69 ] プログラムで組み立てた方が分かりやすいのは確か。 だけど正規表現を華麗に使いこなせる様になりたいの。
68 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 21:17:36.02 ] >>62 ありがとうございます。 流石にこの程度の物に対して正規表現を使うのは大げさな気がしました。
69 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 21:23:36.36 ] >>63 流石になんでもかんでも正規表現をやるのはどうかと思いました。 その様にプログラムを今回は使う事にします。
70 名前:デフォルトの名無しさん mailto:sage [2012/06/29(金) 10:06:32.67 ] >>66-67 要求としてはどっちも正しいよな、ほんと。
71 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 19:40:41.37 ] 数値比較を正規表現だけでやることになって、たった4桁なのに泣きそう。
72 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 19:42:21.41 ] 簡単じゃねーか
73 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 19:51:37.98 ] あら、そうなのか。調べても分からんかった。
74 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 20:03:30.29 ] せめてググレよw
75 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 20:12:37.16 ] 正規表現だけで、二つの並んだ四桁の数字の大小比較をするのは、 プログラム生成するしかないような巨大な正規表現になる。
76 名前:71=73 mailto:sage [2012/07/02(月) 20:42:11.85 ] >>74 ググったんだけど、\d+とか[0-9]+とかしか出てこなくて。 >>75 今回の為だけに、正規表現を生成するプログラムを作ろうかとまで思ったw
77 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 22:56:17.99 ] ^.+(?=[wWwW][ 。]*(?:<br>|$)) 2chブラウザで芝をNGする正規表現なのですが、いくつか分からない場所があります ?=や?:はどういった意味なのでしょうか? 調べてみたのですが、うまく出てきませんでした また、^.+や.+$で挟む必要はあるのでしょうか? 書いてあるほうが重畳かと思いますが、書いてない場合も見受けられます どちらでもいいのでしょうか? また、これでは「そうかwwwwよくわかったわ」のように真ん中に芝が入っているレスはNGできません ワールドワイドウェブは保持しつつも芝を完全にNGする書き方はないでしょうか? よろしくお願いします。
78 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 23:18:56.96 ] >>1
79 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 23:40:18.28 ] このスレはテキストエディタでの正規表現を質問してもいいですか?
80 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 23:52:46.01 ] どうぞどうぞ
81 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 23:52:46.84 ] なんでダメだと思ったの? スレタイを10回嫁
82 名前:デフォルトの名無しさん mailto:sage [2012/07/02(月) 23:59:20.48 ] >>81 プログラム板なのでプログラム関係の質問だけしかしてはいけないのかと思いまして一応確認を取らさせていただきました。 では失礼します。 テキストエディタ「Apsaly」を使用しています。 test1やtest2などの文字列を検索して、 test6、test7のように決めた分(今は+5)だけ数字の値を増やしながら置換することは出来ますか?
83 名前:デフォルトの名無しさん mailto:sage [2012/07/03(火) 00:07:41.25 ] わろた 自分でテキストエディタ作ってんじゃないのか
84 名前:デフォルトの名無しさん mailto:sage [2012/07/03(火) 00:12:38.98 ] ごめんなさい やっぱり駄目でしたか
85 名前:デフォルトの名無しさん mailto:sage [2012/07/03(火) 00:14:23.36 ] 痴漢は正規表現の仕事じゃねーし。 MikoScript書け。
86 名前:デフォルトの名無しさん mailto:sage [2012/07/03(火) 00:15:45.12 ] 痴漢は性器の・・・
87 名前:デフォルトの名無しさん mailto:sage [2012/07/03(火) 00:18:34.42 ] >>85 すいません 痴漢に多くを求めてしまいました MikoScriptなんてのがあったんですね これなら何とかできそうです ありがとうございました
88 名前:uy mailto:sage [2012/07/04(水) 03:56:37.07 ] >>81 >>84 俺はこの流れのほうがワロタだわ >プログラム板なのでプログラム関係の質問だけしかしてはいけないのかと思いまして一応確認を取らさせていただきました。 誰が決めたの? つうか答えられる奴が少ないから答えが返ってこないだけ
89 名前:デフォルトの名無しさん mailto:sage [2012/07/04(水) 04:06:01.96 ] どう考えてもスレ違い
90 名前:uy mailto:sage [2012/07/04(水) 10:57:08.19 ] スレ違いつうかApsaly用の質問スレなんてないし IDE + テキストエディタ系の専用質問スレがあったほうがいいんじゃね
91 名前:デフォルトの名無しさん mailto:sage [2012/07/04(水) 23:16:05.48 ] Apsalyは公式サイトに掲示板ないのに、ソフトウェア板のスレまで閑古鳥が鳴いてるという不人気エディタなのに、 ム板で普通に会話が成立しているのに驚いた もしかしてMikoScriptって意外と使ってる人多いの?
92 名前:デフォルトの名無しさん mailto:sage [2012/07/05(木) 00:33:13.30 ] /A(?:(?(R)b|c)|(?R))+/ これって何にヒットするんです? AbとかAcなんかじゃヒットしない ホントこれだけが正規表現の中で動きが全くわからぬ
93 名前:デフォルトの名無しさん mailto:sage [2012/07/05(木) 11:56:16.57 ] PCREだと (?(R)b|c) が 再帰式中ではb そうでなければ c なので Ac+ とかAAbとかが該当するんだけど環境は?
94 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 16:54:42.65 ] (?(R)って何? PCREってほんとにPerl互換なの? そんな機能知らないわよ
95 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 17:17:58.74 ] >>94 perldoc.jp/docs/perl/5.14.1/perlre.pod#Extended32Patterns > (?(condition)yes-pattern|no-pattern) > (?(condition)yes-pattern) > (condition) はかっこでくるまれた数値(対応するかっこ対が マッチングしたときに有効)、 > 先読み/後読み/ゼロ幅で評価される言明、角かっこ もしくはシングルクォートで > くるまれた名前(その名前のグループが マッチングしたときに有効)、 > 特殊なシンボル (R) (再帰または eval 内で 評価されているときに真)のいずれかです。 > (R) > 式が再帰の中で評価されているかどうかを調べます。
96 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 18:06:10.18 ] なるほど・・・意味が分からん
97 名前:デフォルトの名無しさん mailto:sage [2012/07/14(土) 20:33:20.42 ] 最後に○○がつくけどマッチング文字列に含めないってどうすればいいんでしったっけ
98 名前:デフォルトの名無しさん mailto:sage [2012/07/14(土) 20:55:46.57 ] 先読みのことかな? あいう○○ う(?=○○) 後ろに○○がつく「う」にマッチ
99 名前:デフォルトの名無しさん mailto:sage [2012/07/15(日) 01:10:45.88 ] Aは(.+) (.+)はB という2つの文から 「AはB」 という文を作るにはどうすればいいですか?
100 名前:デフォルトの名無しさん mailto:sage [2012/07/15(日) 01:16:45.18 ] どゆこと?
101 名前:デフォルトの名無しさん mailto:sage [2012/07/15(日) 04:08:18.43 ] >>98 ありがとうございます。
102 名前:デフォルトの名無しさん mailto:sage [2012/07/19(木) 19:06:50.67 ] 正規表現での置き換え文字列をランダム化する方法はありませんか? 例 検索文字列 半角スペースで挟まれたアルファベット4文字 ( )(\w{1})(\w{1})(\w{1})(\w{1})( ) 置き換え結果 以下から ランダムでどれかを出力 \1●●\3\4\5 \1●\2●\4\5 \1●\2\3●\5 \1\2●●\4\5 \1\2●\3●\5 \1\2\3●●\5 分かる方いましたらお願いします。 サクラエディタつかってますが
103 名前:デフォルトの名無しさん mailto:sage [2012/07/19(木) 19:23:09.77 ] 普通にコード書けばええんや?
104 名前:デフォルトの名無しさん mailto:sage [2012/07/19(木) 21:47:09.24 ] その正規表現は一体
105 名前:デフォルトの名無しさん mailto:sage [2012/07/20(金) 18:43:47.12 ] >>102 マクロでがんばれ ついでに サンプルだからそうしてるのかも知れんけど 1文字ずつ指定するときは量指定子いらないよ
106 名前:102 mailto:sage [2012/07/21(土) 00:37:12.97 ] >>103-105 返信ありがとうございます。 色々コードとか、何か別のプログラムとかの組み合わせで可能なのかどうか調べてみましたが、 プログラムの知識自体が無いのでやっぱり難しいのでしょうか マクロについて、サクラエディタのmacファイルを直接編集で何とかできないかと試して見ます 1つの文書で数千箇所置き換え箇所があるのですが、マクロで何かよい書き方とかあるのでしょうか? とりあえず色々調べてみます。
107 名前:デフォルトの名無しさん mailto:sage [2012/07/21(土) 17:52:39.23 ] for(int a = 1; a < 5; ++a) for(int b = 1; b < 5; ++b) if(a != b){ int k = 0; for(int i = 0; i < 6; ++i){ if(a == i || b == i) print(' '); else{ print(str[k]); ++k; } } print('\n'); }
108 名前:デフォルトの名無しさん mailto:sage [2012/07/21(土) 17:55:19.04 ] ああちがうか for(int i = 0; i < 6; ++i){ if(a == i){ print(' '); } else if(b == i){ print(' '); ++k; } else{ print(str[k]); ++k; } } こうなのか
109 名前:デフォルトの名無しさん mailto:sage [2012/07/21(土) 18:03:36.25 ] いやランダムに一個選ぶだけか //a,bは空白にしたいインデックス。str[b]はスキップされ戻り値に含まれない string M(int a, int b, char[] str) { if(a == b) throw new Exception(); List<char> result = new List<char>(); for(int i = 0; i < str.Length + 1; ++i){ if(a == i){ result.Add(' '); } else if(b == i){ result.Add(' '); ++k; } else{ result.Add(str[k]); ++k; } } return new string(result); }
110 名前:デフォルトの名無しさん [2012/07/21(土) 20:32:44.62 ] '([\x8E\xA1-\xFE][\xA1-\xFE])' で、euc の2バイト文字にマッチするかと思いますが、 このうち、「×」(\xA1DF)のみマッチさせたくないのですが、 どのように書けばよいでしょうか?
111 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 14:32:08.52 ] homepage3.nifty.com/k-takata/mysoft/bregonig.html
112 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 17:22:52.61 ] (A|B|C|D)と[ABCD]は 全く同じ意味ということでいいんでしょうか? イマイチ違いが分かりません 使い分けとかあるんでしょうか
113 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 17:37:23.71 ] >>112 それ単独で見れば同じように動く、だろうね。 速度とか効率とかの違いはあるかもしれないけど、そのへんは詳しい諸兄に任せる。
114 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 17:43:07.64 ] >>112 俺は、単一文字なら [ABCD]、複数文字列なら (ABC|DEF|GHI|JKL)
115 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 18:03:40.37 ] >>112 [ABCD]はシンタックスシュガーです。 意味的にはなくても問題無いです。 >>113 効率どっちがいいかは実装依存ですね。 状態遷移マシン使うタイプの実装なら差は出ないけど。
116 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 18:24:01.31 ] ふくろう本には(A|B|C|D)だと遅くなる環境もあるって書いてあったよ できるだけ[ABCD]使ったほうがいいと思う
117 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 18:42:07.57 ] それはASCII文字の話じゃないの? サロゲートペアを考えると[ABCD]なんて内部的にも実質無いも同然。
118 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 20:21:15.68 ] サロゲートペアかどうかって何の関係が?UTF-8なら3バイトまでに収まるか4バイトかの違いに過ぎない。 マルチバイトに対応したエンジンなら1文字は1文字だし。
119 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 20:47:22.57 ] UTF-16を内部表現に利用していると、 [ABCD]は、例えばBがサロゲートペアだと、(A|BB'|C|D)と同じになる。 サロゲートペアなくても内部UTF-8のエンジンは同等の変換が必要。
120 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 20:59:13.92 ] えー
121 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 21:18:43.74 ] 同じになるとは限らんよ。バイト単位で比較するかコードユニット単位かコードポイント単位か、まさに実装次第。 しかしUTF-16なエンジンって少ない気がするんだが。
122 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 21:28:30.44 ] えっ Javaや.netのは
123 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 21:55:09.72 ] boost::u32regexはサロゲをまともに処理できる。 unicode扱いはICU任せで32bit幅wchar使ってるんで。 PCREはカオスすぎてわけがわからん。 内部はバイト列でUTF16とUTF8のモードがifdefで錯綜してて。
124 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 22:00:51.71 ] >>122 すまん、全く眼中になかったwww
125 名前:デフォルトの名無しさん [2012/07/22(日) 22:20:14.16 ] >>110 > '([\x8E\xA1-\xFE][\xA1-\xFE])' で、euc の2バイト文字にマッチするかと思いますが、 > このうち、「×」(\xA1DF)のみマッチさせたくないのですが、 > どのように書けばよいでしょうか? 鬼車や鬼雲を正規表現エンジンとするRuby1.9系やサクラエディタ(要bregonig.dll)なら [\x8E\xA1-\xFE\xA1-\xFE&&[^×]] でどうでしょうか? #文字クラス内で積演算の&&が使えないよう環境なら、否定先読みを併用すればできるのかな? www.geocities.jp/kosako3/oniguruma/doc/RE.ja.txt https://github.com/k-takata/Onigmo/blob/master/doc/RE.ja 6. 文字集合 ^... 否定 (最低優先度演算子) x-y 範囲 (xからyまで) [...] 集合 (文字集合内文字集合) ..&&.. 積演算 (^の次に優先度が低い演算子) 例. [a-w&&[^c-g]z] ==> ([a-w] and ([^c-g] or z)) ==> [abh-w]
126 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 12:44:45.94 ] 今時マルチバイト文字を文字単位で扱えない環境なんて嫌だな あとEUCJPは3バイトまであるし
127 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 13:03:05.65 ] 嫌な環境なら使わなければ良いだけなのに。 何言ってんのこいつ。
128 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 16:12:33.90 ] >>127 好き嫌いで何とかなる類のものでも無いだろw 真っ先に変換しとけ、というなら分かるが。
129 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 17:08:30.35 ] いや、嫌だって思うのは自由だし、普通の感情だろ。
130 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 17:10:02.76 ] 本当に今欲しい物 それはその答えですか?
131 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 18:00:50.91 ] >>129 好き嫌いの感情自体は誰も否定してないんだ
132 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 19:08:36.13 ] 人が嫌がるものだからこそ金になるんだろ。
133 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 21:09:24.31 ] Javaも.NETも2バイト以外の文字は使えない設計だよね
134 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 21:22:58.49 ] Python は安心
135 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 21:27:33.74 ] えっ .NETでも普通にサロゲートペア文字検索できるけど
136 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 21:43:30.89 ] > 2バイト以外の文字は使えない そもそも何を言わんとしているかわからん。
137 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 21:47:18.68 ] 馬鹿には無理
138 名前:デフォルトの名無しさん [2012/08/03(金) 21:50:53.37 ] javascriptで下記のような置換を行いたいのですが、どのようにすれば良いでしょうか? hogehoge1 <img src="1.png"> <img src="2.png"> <img src="3.png"> <img src="4.png"> <img src="5.png"> hogehoge2 ↓ hogehoge1 <img src="1.png"> hogehoge2 おながいします おながいします
139 名前:138 mailto:sage [2012/08/03(金) 22:20:30.79 ] 自己解決しましたすんません
140 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 07:53:41.34 ] >>138 どういう置換だったのだろうか。 1) hogehoge1 と hogehoge2 の間の先頭の一行のみ残し、他の行は削除。 2) hogehogeN と hogehogeN+1 の間で N.png を含む行だけ残し、他の行は削除。 くらいの可能性があると思うが。第一感は2)だが、hogehogeN+1以下をどうするか書くべき。 1)の解釈の方が無難。
141 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 00:04:48.96 ] ●正規表現の使用環境 C# ●検索か置換か? 検索 ●説明 ●▼■ の部分をマッチさせたい ●対象データ ほげほげ●▼■ほげおわり ほげほげ●▼■ほげここまで ●希望する結果 ●▼■ ほげほげ(?<1>.+?)ほげおわり|ほげここまで のように書きましたがだめみたいです。 これだと ほげほげ(?<1>.+?)ほげおわり もしくは ほげここまで という風になってしまうのでしょうか? ほげおわり か ほげここまで のどちらかという書き方を教えてほしいです。
142 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 00:52:15.90 ] C#のソースコードで書いてよければ 「(ほげほげ)(.+?)(ほげおわり|ほげここまで)」で検索して、 match.group(1)で取るだけで足りるのでは? group(1)でグループを取り出してないのと、「|」の優先順位が後回しなのが原因だと思う
143 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 01:42:57.32 ] ありがとうございます。 その方法でできました。 グループの指定の仕方を勘違いしていたようです。
144 名前:デフォルトの名無しさん [2012/08/07(火) 11:23:49.88 ] javascript処理です。 <input type="image" name="" src="/printer.gif" value="PRINT" onclick="myFunc('/print.do','100024516675','05','100051319097','PRINT','4756615037424747126');return false;"> のタグから,onclickの内容を文字列で取得した後に,引数を正規表現で取得しようとしてます。 func = "myFunc('/print.do','24516675','05','1051319097','PRINT','4756615037424747126');return false;" ret = func.match(/'[^']*'/g); とすると前後のクウォーテーションも混じってしまうので,現状はval[0] = ret[0].slice(1,-1)のように後処理してます。 これをはじめから正規表現を使って後処理なしにする正規表現が思いつきません(あるとは思うのですが) 要するに、二つの「'」に囲まれた文字列に複数回マッチするが「'」そのものは含まれない。というものです。 よろしくお願いします。
145 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 11:55:03.96 ] これもグループ化の出番だと思う ret = func.match(/'([^']*)'/g); と取り出したい部分をカッコでくくって ret[i].$1; と$1=1番目のグループマッチ文字列内容を取り出す ※ブラウザ互換は自信がないので確認されたし。IEやFirefoxは大丈夫なはずだが
146 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 13:29:23.05 ] >>145 ありがとうございます。残念ながらSafari環境ではダメでした。 var re = /'([^']*)'/g; var match; while ((match = re.exec(func))) { alert(match[0] + "\n" + match[1]); } でできるようです。 でも,,,sliceから変更するメリットが,,,
147 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 16:03:26.73 ] 'を外す表現があるような気もするけど、 多分 slice(1,-1)より遅いと思う。
148 名前:デフォルトの名無しさん [2012/08/07(火) 16:58:08.04 ] >>138 ,>>140 二度と来るなhoge厨
149 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 18:19:28.22 ] javascriptはjQueryを使った方が可読性が上がって好き。
150 名前:デフォルトの名無しさん [2012/08/08(水) 00:43:27.27 ] echo "gr|y" |grep -e "gr[a|e]" > gr|y gray、またはgreyだけでなく、 なんで|記号まで対象になってしまうでしょう?
151 名前:150 [2012/08/08(水) 00:45:43.03 ] echo "gr|y" |grep -e "gr[a|e]y" 最後、yがぬけてた。 |記号は普通の文字列として扱われてしまっているのでしょうか・・
152 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 00:56:45.81 ] それをやるなら "gr[ae]y" か "gr(a|e)y" だろ
153 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 02:44:20.82 ] 韓国開発研究院(KDI)が5日に発表した報告書によると、統計庁の2011年の家計金融調査を分析した 結果、借金を抱える世帯の33%が赤字状態で、7%は負債が資産を上回っていることが分かった。 韓国の世帯数は1757万世帯(2010年現在)で、うち借金がある世帯が63%を占めることから、借金があり、 かつ赤字状態の世帯は365万世帯に達することになる。また、負債が資産よりも多く、かつ赤字状態の世帯は 全体の3.3%(36万世帯)だった。特に債務返済能力は低所得層ほど低いことが分かった。 漢陽大のハ・ジュンギョン教授は「不動産市場の低迷で資産の売却が難しく、借金があり赤字状態の世帯が さらに借金を重ねる悪循環に陥る可能性がある」と懸念を示した。 キム・テグン記者 朝鮮日報/朝鮮日報日本語版: 2012/08/06 09:08 www.chosunonline.com/site/data/html_dir/2012/08/06/2012080600636.html
154 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 11:00:19.07 ] とりあえずperlで <div class="test"> <div class="block"> だkfj;ぇkたj; わえltかj;うぇlk あうぇktじゃ;うぇkl </div> <pre> </pre> </div> っていうhtmlのコードがあるとして、 <div class="test">から一番下の</div>までの中にあるデータを取得したいんですが、 これにマッチする正規表現ってありますか? この中にも</div>がいくつかあるので、最後の</div>にマッチする前に何回かひっかかっちゃってうまくいかないんです 正規表現のプロの皆さんよろしくお願いします。
155 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 11:03:10.34 ] マッチの終わりに</pre></div>を指定すれば・・・
156 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 11:13:33.16 ] 正しいタグの組じゃなくて最後の</div>でいいなら 最長一致の <div class="test">.*</div> でいいわけで そうでないなら html解析するべき
157 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 11:14:43.84 ] あ、すいません。 最後の</div>のまえに必ず</pre>があるとは限らないんです。 やっぱ最後の</div>の直前か直後に他にはない決まった文字とかがないと無理っすよね〜
158 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 11:15:43.77 ] >>156 あ、すいません。 最後の</div> の後ろにも</div>とか 色んな文字が並んでます。 やっぱ>>157 で言ったとおり無理ですよね〜
159 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 12:19:38.47 ] >>157 入れ子になった完全な<div> </div>のなかにあるデータというと それはタグ(例えば<div>)を含んで構わないということかな。
160 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 12:24:19.36 ] >>159 はい大丈夫です
161 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 12:45:43.22 ] <div(?(R)[^>]*| class="test")>.*?(?R).*?<\/div> PCRE だとこんな感じ?
162 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 12:52:30.80 ] スレチだけど素直にxpath。 $ xmlstarlet sel -t -m "//div[@class='test']/*" -c . -n
163 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 12:54:38.43 ] やっぱりperlじゃなくてPHPでお願いします。 正規表現が無理ならPHPの関数使ってでもいいです
164 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 13:13:13.15 ] >>161 まんまだと駄目で (?R)*にしても <div class="block">の閉じで終わってしまう。
165 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 16:00:17.05 ] PHPでお願いしますって言ってた質問もういいです。 preg_matchを繰り返せばなんとかとりたい部分だけ取れました。 ご迷惑おかけしました。
166 名前:デフォルトの名無しさん [2012/08/09(木) 03:48:44.49 ] 性器表現
167 名前:uy mailto:sage [2012/08/10(金) 18:07:28.45 ] rubyの正規表現の質問です 連続して10回以上...無限にマッチさせる構文ってないですか? /6{9}6+/ いまはこんな事をやっていますがもう少しスマートな書き方あれば教えて欲しいんですけど
168 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 18:34:04.25 ] >>167 /6{10,}/
169 名前:uy mailto:sage [2012/08/10(金) 18:36:37.17 ] >>168 ありがとうございます
170 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 18:38:34.97 ] 改行を含むながー文字列で先頭にタブ文字が入ってるやつがあります。 このタブだけにマッチするには、 ^\t でいいんでしょうか? ^\t$ こうかと思ったんですがこれだとマッチしませんでした。
171 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 18:44:36.79 ] >>170 >改行を含む
172 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 18:46:38.61 ] 質問しなおします。 改行を含むながーい文字列があります。この文字列の中にはタブ文字も含まれています。 この文字列の一番先頭にタブ文字が紛れ込んでいるやつがあります。 これを除去したいんです。 PHPのpreg_replaceを使うとしたら、 preg_replace("/^\t$/","",$str); こうですか? これじゃマッチしませんでした。。
173 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 19:34:43.94 ] >>172 それは多分タブ文字しか含まない文字列にのみマッチする。 長いだっのか。ちゃんと書こう。
174 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 20:55:35.73 ] 文字列の先頭しか必要ない話なのに、文字列が改行含むかどうかが関係するのか? それとも文字列には複数行が含まれていて、 そのどの行の先頭でも同じ変換をしないといけないわけなのか?
175 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 21:07:25.04 ] >>174 それは$strに代入したあなたに聞いて。 あなたの書いた正規表現は文字列の1文字目がタブで、それが文字列の最後の文字だということ。つまり文字列が1文字でかつタブという正規表現。必要ないと言っても、必要としているスクリプトになってるから。
176 名前:デフォルトの名無しさん [2012/08/10(金) 21:27:21.32 ] 私は>>174 じゃありません >>174 なんか正規表現の中で文字列の先頭を改行の後とみなすやつがあったので一応書いておきました。 もしそいつにもマッチしたら困るので >>175 じゃあ最初の文字だけにマッチさせるにはどうしたらいいですか? とにかく先頭にタブ文字がある文字列をピックアップしたいんです。 あ、じゃあsubstrで一文字取って、調べりゃいいですね。 皆さんありがとうございました。
177 名前:デフォルトの名無しさん mailto:sage [2012/08/10(金) 21:32:17.10 ] 正規表現でやりたきゃ$が不要。 しかし正規表現必要ないな。
178 名前:デフォルトの名無しさん [2012/08/11(土) 06:43:50.15 ] >>176 PHPのは知らないけどPerlの正規表現では^は正規表現フラグm(マルチライン)が有効になってると、 ^が文字列先頭以外にも改行直後(行頭)にもマッチしてしまうので、 正規表現フラグ関係なく、改行が含まれるかもしれない文字列の先頭のみにマッチさせたい場合は、 \Aを使うべし
179 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 14:09:27.76 ] t
180 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 14:17:57.80 ] >>178 そういう回答求めてました ありがとうございました
181 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 16:22:33.21 ] 全体が10文字以内でaとbとcをこの順番に含むパターンってどうかきますか?
182 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 16:40:58.70 ] >>181 プログラムを使えるなら楽なんだが… たぶん、正規表現だけってことだよねぇ
183 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 16:44:12.55 ] xxx/abc/dfg/hij xxx/abc/hij この二つの文字列にマッチさせるようにするにはどうしたらいいでしょうか?
184 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 16:50:11.71 ] >>183 「/abc/」を含む文字列すべて、ならこれでどうでしょうか? .*/abc/.*
185 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 16:52:50.83 ] xxx/abc/(dfg/)?hij で行けそうな
186 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 17:19:33.04 ] >>184 >>185 ありがとうございます
187 名前:デフォルトの名無しさん [2012/08/11(土) 19:03:41.15 ] >>181 > 全体が10文字以内でaとbとcをこの順番に含むパターンってどうかきますか? .*a[^c]*b[^a]*c.* と .{3,10} の肯定先読みか肯定戻り読みを合体させれば、 できるんじゃないかしら? もっとも「1qabbbcd90」とか「aあbいbc」みたいなaとcに囲まれるbの個数が2個以上はNGで 1個限定ということなら前者の正規表現も更にカスタマイズが必要になるけど
188 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 05:04:21.31 ] emacs-lispの正規表現でわからない点があるので教えてください。 Cソースコードの #define プリプロセッサにマッチさせるための正規表現で下記が良く使われているのですが "^\\s-*#\\s-*define" - ↑のマイナスって意味ってありましたっけ? www.kt.rim.or.jp/~kbk/regex/regex.html とかみてもそれらしいのが見つからないのですが・・・ #defineに一致させるためなのであれば 行頭のスペース任意数以上(0〜N回)#スペース任意数(0〜N)define なので "^\\s*#\\s*define" とかで良いきがするのですが・・
189 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 07:43:45.93 ] >>188 もう emacs 使ってないので、はずしてるかもしれないけど EmacsLispの正規表現「\s」は空白文字類じゃない。 d.hatena.ne.jp/holidays-l/20070602/p1 じゃないの?
190 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 08:18:54.14 ] >>189 > >>188 > もう emacs 使ってないので、はずしてるかもしれないけど > > EmacsLispの正規表現「\s」は空白文字類じゃない。 > d.hatena.ne.jp/holidays-l/20070602/p1 > > じゃないの? え・・・ マジすか・・ 確かにコレなら上の構文は納得です。 ありがとうございました。
191 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 19:24:13.57 ] javaですが、日本語などの全角文字を探す場合、ascii以外という発想で「[^\p{ASCII}]」や「.*[^ -~].*」を使っていますが、 もっとスマートな別な表現はあるでしょうか?
192 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 20:43:41.61 ] >>191 java.lang.Character.UnicodeBlockで定義されてるものは使えるそうだけど。 全角というのは表示上のことだし、日本語で使うという風にも区切られていない。 HIRAGANA KATAKANA KANJIとかすると半角カナとかも含まれそう。
193 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 00:29:42.79 ] ambiguousとかどうするよ? わざわざ前後の文脈までみるのか?
194 名前:デフォルトの名無しさん [2012/08/17(金) 13:40:24.55 ] ruby初心者でテキスト処理初心者です 以下のテキストから「かきくけこ」を抜き出したいです =テキスト= (1)あいうえお →かきくけこ (2)さしすせそ .scan(/あいうえお(.*?)さしすせそ/m)と書くと「→」と「(2)」が邪魔です .scan(/あいうえお\n→(.*?)(2)さしすせそ/m)と書くと何も取り出せません なぜうまくいかないのでしょうか
195 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 13:46:06.59 ] カッコをエスケープしてないから \(2\)
196 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 13:51:05.45 ] なるほど!ありがとうございます
197 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 13:58:31.90 ] .scan(/あいうえお\n→(.*?)\(2\)さしすせそ/m)にしても何も取り出せませんでした…
198 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 15:10:47.81 ] 取り出し云々の前に、マッチするかよく確認するべきじゃないの。 例えばこんなの。 rubular.com/r/GfgQLaoQoT
199 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 15:27:10.60 ] 急がば三回まわってワンとお鳴き
200 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 15:32:56.75 ] >>198 これだと>>197 の書き方でうまくいく判定がされるのですが実際にプログラムを動かすとどこもマッチしないのです \nのあたりに問題があるのでしょうか
201 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 15:36:36.39 ] その人は、うまくいかない例でやってみてどうよ?って聞いてるんだよ
202 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 15:53:41.75 ] できました!ありがとうございます
203 名前:デフォルトの名無しさん mailto:sage [2012/08/18(土) 23:12:39.31 ] h?t?tps?://.+ という定義ではすべてのURLがマッチしますが www.hogehoge.jpg といった画像リンクは除外するようにする定義を教えてください h?t?tps?://.+(?!jpe?g|png|gif|bmp) としてもうまくいきませんでした
204 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 03:23:09.41 ] >www.hogehoge.jpg これが画像のURL?? まあそういう仕様ということで、こんな感じかな。 h?t?tps?:\/\/.+\.(?!(jpe?g|png|gif|bmp)(?=\s|$))[a-z]+(?=\s|$)
205 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 08:17:42.50 ] どんなURLだw
206 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 09:15:56.05 ] 自分だったら複数回grepで実現するかな。 欲しい拡張子以外を、順次消していく(該当行を\r\nに置換)
207 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 09:52:20.64 ] 先読みと後読みを勉強すれば解決するな
208 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 17:26:30.66 ] zasshi.news.yahoo.co.jp/article?a=20120819-00000784-davinci-ent こういったURLにはマッチしないんですかね ここで調べました PHP正規表現チェッカー ver1.0.3 www.rider-n.sakura.ne.jp/regexp/regexp.php
209 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 20:08:06.25 ] >>208 最初から十分な希望例を挙げて欲しいんだけど。おかしな例じゃなくてね。 環境も分からないし。テンプレ>>1-4 も読んでね。 h?t?tps?:\/\/.+\.(?!(jpe?g|png|gif|bmp)(?=\s|$|\?))[^.\s]+(?=\s|$) >PHP正規表現チェッカー ver1.0.3 これは正しく動作してるように思えない。以下をオススメする。 www.rexv.org/ rubular.com/ www.gethifi.com/tools/regex
210 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 20:13:46.87 ] 正しく動いていないというのはどういうところ?
211 名前:デフォルトの名無しさん mailto:sage [2012/08/19(日) 20:38:31.91 ] >>209 分かりました スレ汚しすみませんでした
212 名前:デフォルトの名無しさん mailto:sage [2012/08/22(水) 17:33:42.49 ] 「$」の直前に「'」がなく、さらに「$」よりも前に「#」が一切ない正規表現ですが、 以下だとエラーになってしまいます。 (?<!^[^#]*)(?<!')\$ 上記の正しい正規表現を教えていただけないでしょうか?
213 名前:デフォルトの名無しさん mailto:sage [2012/08/22(水) 17:53:09.25 ] [^#]*[^,#]\$ では駄目かどうか教えて。
214 名前:デフォルトの名無しさん mailto:sage [2012/08/22(水) 17:55:35.22 ] >>213 …すんません、ありがとうございます。 なんてばかだったか… ちなみに戻り読み否定で「#.*」は使えないのでしょうか?
215 名前:デフォルトの名無しさん mailto:sage [2012/08/22(水) 18:04:00.12 ] 可変長否定戻り読みとなると、使える環境は限られます
216 名前:デフォルトの名無しさん mailto:sage [2012/08/24(金) 15:14:46.73 ] 簡単な質問かも知れませんがお願いします 「家具」を消すには /(家具)/ ですが あくまでも例えですが「木目調家具」は消したくない場合はどのように書けばいいのでしょうか
217 名前:デフォルトの名無しさん mailto:sage [2012/08/24(金) 18:57:17.56 ] >>216 少し上のレスにもある否定戻り読みを使って (?<!木目調)家具
218 名前:デフォルトの名無しさん [2012/09/11(火) 07:26:49.98 ] 青空文庫の注記をエディタ類の置換でやろうと思うのですが なんとか吹喋[#「喋」に「ママ」の注記]かんとか ↓ なんとか吹<ruby><rb>喋</rb><rp>(</rp><rt>ママ</rt><rp>)</rp></ruby>かんとか \1[#「([^「」]+?)」に「([^「」]+?)」の注記] とか後方参照は出来るエディタは無かったですね やっぱり スクリプト組むしかないのかな
219 名前:デフォルトの名無しさん [2012/09/11(火) 16:55:28.27 ] オートマトンって何ですか?
220 名前:デフォルトの名無しさん mailto:sage [2012/09/11(火) 19:00:49.57 ] 殴投魔団
221 名前:デフォルトの名無しさん mailto:sage [2012/09/11(火) 19:39:19.44 ] 状態機械 ja.wikipedia.org/wiki/%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3
222 名前:デフォルトの名無しさん mailto:sage [2012/09/12(水) 03:32:54.57 ] https://example.com/(abcABC123)/apple/(123456) にはマッチして https://example.com/(abcABC123)/apple/(123456)/orange/1 にはマッチしない、定義を教えてください。 ()内は変動します。 https?://example\.com/[^/]+/apple/\d+ ですと、両方マッチするみたいですが、上だけにマッチするように手直しよろしくお願いします。
223 名前:デフォルトの名無しさん mailto:sage [2012/09/12(水) 04:08:54.24 ] 最後に $ を付ける?
224 名前:218 mailto:sage [2012/09/12(水) 07:13:43.25 ] 結局 >>218 はWSH(VB)で s = rfp.ReadText Set regEx = New RegExp Set reg2 = New RegExp regEx.Pattern = "[#「([^「」]+)」に「([^「」]+)」の注記]" regEx.Global = True Set Matches = regEx.Execute(s) For Each Match in Matches d1 = regEx.Replace( Match.Value,"$1" ) d2 = regEx.Replace( Match.Value,"$2" ) d = d1+ Match.Value reg2.Pattern =d s = reg2.Replace( s , "<ruby><rb>"&d1&"</rb><rp>(</rp><rt>"&d2&"</rt><rp>)</rp></ruby>") Next wfp.WriteText s とやりました
225 名前:デフォルトの名無しさん mailto:sage [2012/09/12(水) 07:32:51.85 ] >>224 ていねいな報告、ご苦労さまです。
226 名前:デフォルトの名無しさん mailto:sage [2012/09/12(水) 08:48:10.11 ] マッチさせた部分文字列が後にあるから、2度読みしないとたぶん無理だと思うからスクリプトで処理して正解だと思うよ
227 名前:デフォルトの名無しさん mailto:sage [2012/09/12(水) 14:29:55.98 ] >>223 ありがとうございます
228 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 01:57:30.02 ] すみません、質問させて下さい 一括ファイル整理ソフト:Classifier ttp://realize.jounin.jp/classifier.html こちらのソフトを使い、正規表現で大量にあるファイルの整理を行おうとしております 【写真】[イベント名] [苗字名前] 詳細.jpg こういった形式のファイルに対して、苗字の頭一文字目が『あ行』なら あ行のフォルダへ移動、『い行』ならい行のフォルダへ移動、という 処理をさせようと、以下の正規表現を入力し実行しました 【[^】]*】\[[^\]]*\]\s\[[亜-音][^\]]*\].* 結果を見ると、仕分けは実行されたのですが、あ行以外の苗字の方もあ行 フォルダへ仕分けされてしまいました。 こちらのソフトは開発環境がVisualBasicで、内部的には2バイトのUnicode規格に 基づいているせいで、シフトJISの漢字コード(音読み)で仕分けるにはこの正規表現 では駄目との事でした。 Unicodeの正規表現でシフトJISコードの亜-音と同じ結果が出せる正規表現方法は 無いでしょうか?もしご存知の方がいらしたら教えて下さい よろしくお願いいたします
229 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 04:46:24.97 ] あるかないかで言えばあるけどそんな単純じゃないよ
230 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 12:56:11.80 ] ファイルが大量にあることは想像できました。 よくあるリネームではなく、特定フォルダーへの移動でしょ? だったらdir結果をテキストエディターで1行ずつ move ファイル名 読み仮名_あ_始まり\ って書いたら? 読みが「あ」で始まるかどうかは単なる漢字の音読み、訓読みでは判断できない場合が存在します。 人名だとどうしても人力で頑張るしかない場面だと思いましたがどうでしょうか。 自分だったら1,000人程度だったら空いた時間にしこしこ作業しますね。
231 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 14:05:44.25 ] migemoでふりがな取得出来ないかな…
232 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 14:33:45.73 ] >>231 kakashi
233 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 19:45:32.48 ] これかー kakasi.namazu.org/index.html.ja
234 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 19:56:55.37 ] debianとかはパッケージに含まれてた気がする。<kakasi hがあるかないかで良く見つからないけど。 文章をchasenで解析して単語をkakasiで読み順に並び替えてた記憶がある。
235 名前:デフォルトの名無しさん mailto:sage [2012/09/18(火) 10:21:00.35 ] たとえば河野と書いて「かわの」さんも「こうの」さんもいるのでkakasiでも どうにもならないと思うけどなぁ。割り切れるならいいけど。
236 名前:デフォルトの名無しさん mailto:sage [2012/09/18(火) 11:24:02.90 ] お題はそんな読みを厳密にやる必要なくて、[亜-音]レベルの仕分けでいいんでしょ? [亜唖娃阿哀愛(途中は略)音]って正規表現生成すれば? Shift JISで↑こういう正規表現作ってから、(その方が生成プログラムが簡単なので) Unicodeに変換すればいいよね。GUIのアプリなら、コピペするだけじゃないのかな?
237 名前:デフォルトの名無しさん mailto:sage [2012/09/18(火) 11:45:23.31 ] コレだけだけど、ア行の苗字の1/10もない気がする 亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷 安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣 謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭 院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲 荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円 園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押 旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音
238 名前:デフォルトの名無しさん mailto:sage [2012/09/18(火) 13:13:07.21 ] あれま
239 名前:デフォルトの名無しさん mailto:sage [2012/09/18(火) 13:45:38.31 ] こういう事例見ると、ファイル名に全角カタカナでフリガナを持っとくのも有りだな。
240 名前:デフォルトの名無しさん mailto:sage [2012/09/18(火) 21:08:24.29 ] >>239 そのアイデア、正規表現関係ないけどファイル整理に便利そうだな。 いや、ファイル検索のときは正規表現使うから関係あるか。
241 名前:デフォルトの名無しさん mailto:sage [2012/09/18(火) 22:07:01.78 ] ファイル名に頼らないで、一行目に漢字とカナとローマ字入れとくとか、dbに入れといた方がよさそうだ。
242 名前:デフォルトの名無しさん mailto:sage [2012/09/19(水) 12:04:10.79 ] dbってlinuxコマンドのdb? RDBMS(MySQLとかPostgreSQL)にファイル名用テーブルでも作っとけばいい感じはする。
243 名前:デフォルトの名無しさん mailto:sage [2012/09/19(水) 13:53:28.74 ] >dbってlinuxコマンドのdb? Berkeley DBのことか
244 名前:デフォルトの名無しさん mailto:sage [2012/09/19(水) 20:47:28.90 ] 複雑度によるけど、どっちでもいいんじゃない。ファイルシステムという単純なdbじゃ大変そうという話。
245 名前:デフォルトの名無しさん mailto:sage [2012/09/20(木) 01:32:09.66 ] >235 ニホンゴムズカシイデスネ
246 名前:デフォルトの名無しさん mailto:sage [2012/09/21(金) 12:01:12.94 ] >>245 英語でもPh-はF-と同じ発音だしKn-はしばしばKを発音しない。 読みで分類するからそういう問題に直面するわけで。 # じゃぁ読みで分類するのをやめようとなると、それはそれで別の問題があるけれど。
247 名前:デフォルトの名無しさん [2012/09/22(土) 23:39:02.10 ] ちょっと質問、null文字を検索したら全部ヒットするんだっけ?
248 名前:デフォルトの名無しさん mailto:sage [2012/09/22(土) 23:56:11.73 ] >>247 の質問訂正 配列のデータすべてヒットさせるのは//ではなく/.*/の方がいいかな?
249 名前:デフォルトの名無しさん mailto:sage [2012/09/23(日) 00:03:06.22 ] 配列ってどの言語の配列よ? >>4 のテンプレに従って環境書こうぜ
250 名前:デフォルトの名無しさん mailto:sage [2012/09/23(日) 00:21:34.93 ] >>249 ごめん、perlです
251 名前:デフォルトの名無しさん mailto:sage [2012/09/23(日) 00:27:38.76 ] >>250 捕捉 ActivePerl5.14.2で配列を検索で、全データをヒットさせたい場合は 空文字列を検索でも全データがヒットするけど、きちんと.*を指定したほうが いいのかと思っての質問 単純にperl5の環境で空文字列を検索したら全データヒットと定義されてるのか疑問に思った
252 名前:デフォルトの名無しさん mailto:sage [2012/09/23(日) 23:49:39.15 ] ●正規表現の使用環境 Perl ●検索か置換か? 検索 ●説明 文字列中の数字を配列の各要素に格納したい。以下のプログラムを作りました。 9がresultの先頭に入るのみなのです。このような場合splitを用いるのでしょうか? $str = "TEST 0 1 2 3 4 5 6 7 8 9"; @result = $str =~ m/^TEST(?:\s(\d))+$/g;
253 名前:デフォルトの名無しさん [2012/09/23(日) 23:54:17.31 ] >>252 はPerlスレに現れた荒らし 条件後出しするわブログでもないのに自分の行動予定書いていくわのマジキチ スルーよろ
254 名前:デフォルトの名無しさん mailto:sage [2012/09/23(日) 23:55:58.14 ] >>253 情報サンクス。今真面目に回答書いて投稿前にリロードしたら書いてあって助かったよ。 ギリギリだったw
255 名前:252 mailto:sage [2012/09/23(日) 23:56:15.93 ] 別に荒らしのつもりじゃ無いので、判る人回答お願いします。
256 名前:デフォルトの名無しさん mailto:sage [2012/09/23(日) 23:57:09.54 ] >>252 に回答しても後から情報出されてどうこう言われる
257 名前:デフォルトの名無しさん mailto:sage [2012/09/23(日) 23:58:28.49 ] 一人粘着質のキチガイがいるけど気にしないでね
258 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 00:04:52.12 ] >>252 自分で荒らすだけじゃ飽きたらず向こうの荒らしまで連れてきたのかよ 本当に迷惑だな 社会からさっさと消えればいいのに
259 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 00:07:30.59 ] 今まで質問しただけで、こんなに叩かれたことなかったんで…
260 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 00:08:56.32 ] 死ねよカス
261 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 00:13:39.12 ] 基地害>>252 荒らしかた 暴れる奴の多いスレに釣り質問を投下する ↓ 条件を後だしする ↓ 初心者を免罪符にする ↓ ブログ代わりにする ↓ 暴れてる奴がついてくるように次の行き先を明示 ↓ 次のスレを荒らす←いまココ
262 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 00:15:38.27 ] >>259 ここはテメーの愚痴スレじゃねーぞ精神障害 どんなks親に育てられたんだコイツ
263 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 00:28:11.86 ] どうせ馬鹿が叩いてるだけだろうと思って一応回答は書き上げたが、 念のためにと思って元のスレ(どことは書かないけど分かると思う) を見に行ってみたら、これは本物の釣りっぽいね。 どう見てもわざと煽ってるようにしか見えないし、万が一釣りじゃ なかったとしても同じように後から注文つけられる可能性が高い。
264 名前:デフォルトの名無しさん [2012/09/24(月) 00:53:53.21 ] >>252 が荒らしじゃないなら本気で頭おかしいと思う しかも自覚なさそうだからかなりヤバい
265 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 11:49:11.40 ] そういう時は、マルチと一言書くだけにしてください 個人的な感想はいらない
266 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 13:29:22.30 ] マルチっていうか、機能不全に陥ってるスレで質問しちゃった人が むりくり荒らし認定する人に絡まれて逃げてきたら、 余計な人も付いてきちゃったという流れ
267 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 13:40:32.31 ] 逃げるのにわざわざ行き先言って逃げるのか?w どう考えても不自然
268 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 14:02:19.45 ] マルチと言ったら「はわわ」と返すのがマ板の流儀だと思っていた
269 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 15:05:04.06 ] ??? ここはム板だぞ
270 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 15:41:50.50 ] NullPointerException すまん
271 名前:デフォルトの名無しさん mailto:sage [2012/09/24(月) 15:57:54.50 ] もうすぐ10がっ www.youtube.com/watch?v=7sKs7INaEoA
272 名前:uy [2012/09/25(火) 03:48:48.13 ] 板全体の荒れ方がひどいな あと人の集まってるC++、C#スレあたり荒らしたら板終わるんじゃね
273 名前:デフォルトの名無しさん mailto:sage [2012/09/25(火) 05:44:16.46 ] >>272 Schme/LISP/関数型言語のtwitterでの書き込みは一日平均500を超えるようだけれど、 2chではほとんど0に近い。もうダメ的な状態ではないか。
274 名前:デフォルトの名無しさん mailto:sage [2012/09/25(火) 08:46:22.42 ] しかもまともな人に限ってTwitterにさっさと行ってしまってるしねぇ。
275 名前:デフォルトの名無しさん mailto:sage [2012/09/25(火) 09:31:51.61 ] (2chにまともな人材がいたとは)知らなかった
276 名前:デフォルトの名無しさん mailto:sage [2012/09/25(火) 09:45:30.85 ] いるとか、考え方が気持ち悪い
277 名前:デフォルトの名無しさん mailto:sage [2012/09/25(火) 10:46:56.83 ] >>273 おすすめのユーザー教えてくれ
278 名前:デフォルトの名無しさん mailto:sage [2012/09/25(火) 21:51:10.58 ] めんどくさいでしょ
279 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 15:41:28.14 ] (Twitterに)まともな人材がいたとは知らなかった
280 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 15:53:40.56 ] >>279 大学院生、准教授クラスがごっそり。
281 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 16:05:29.43 ] >>279 関数型言語全体でいうと、大学生+院生+研究者だけで数千人いるのではないか。 一方、2chは珠に読む人を加えても100人にも満たない。
282 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 16:13:05.03 ] 昨年一年間に、関数型言語ではないが、プログラミングの話題として日本語でPrologとツイートした 人だけで延べでなく2400人いた。関数型言語全体だと多分その10倍以上。
283 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 21:17:21.52 ] Prologダメだなとつぶやいたヒトがそんなに。
284 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 21:57:03.68 ] >>283 よくご存知だね。Prologワカンネの方が多い。
285 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 22:14:14.09 ] 授業中にツイートするやつが多い
286 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 06:57:40.26 ] >>282 Prologのプログラマ人口から考えると脅威のツイッター組織率だ
287 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 07:01:05.56 ] >>286 驚異ではなくw
288 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 12:02:56.50 ] スレ違いな話題が多すぎるんで、正規表現の話にせめて絡めたいんだけど、 正規表現で2chやtwitterとかを検索できるサイトとかアプリってないのかな? まあそれ以前にGoogleやらBingやらYahooやらの検索サイトに正規表現検索機能が欲しいんだが、 一般ユーザーが必要としないマニアックな検索方法を提供する気はないんだろうな
289 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 20:55:45.67 ] >>288 いちいち全文検索してるわけじゃなく、インデックスから引いているだけだからあまり意味ないんじゃないか。もしできても、利用者どれくらいだよ。否定やorも使われてないだろう。
290 名前:デフォルトの名無しさん mailto:sage [2012/09/28(金) 00:13:11.17 ] or はたしかに使わないけど、否定は使うだろ。
291 名前:デフォルトの名無しさん mailto:sage [2012/09/28(金) 00:34:45.14 ] コマンドオプションをそのまま貼って否定になってたりな。-help
292 名前:デフォルトの名無しさん mailto:sage [2012/09/28(金) 03:51:56.34 ] >>290 以前は、たとえば「インタフェース OR インターフェース」みたいな、 表記の揺れを吸収するためにときどき使ってたんだが、 いまのGoogleじゃ全部向こうで勝手に吸収してくれるからな。 「interface」すら検索してくれる。
293 名前:デフォルトの名無しさん mailto:sage [2012/09/28(金) 08:55:24.32 ] いんたーふぇすでも通る
294 名前:デフォルトの名無しさん mailto:sage [2012/09/28(金) 10:33:09.84 ] もしかして 朝鮮人
295 名前:デフォルトの名無しさん mailto:sage [2012/09/30(日) 21:25:19.20 ] ν速に帰れば?
296 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 15:52:01.10 ] ●正規表現の使用環境 C# ●検索か置換か? 検索 ●説明 タグの外にある文字列を順に取り出したい ●対象データ <hoge><hoge></hoge>あああ<hoge><hoge></hoge>いいい<hoge></hoge>ううう<hoge><hoge>・・・ ●希望する結果 while (m.Success) の繰り返しの中であああ、いいい、ううう・・・と順に取り出していきたい よろしくお願いします。
297 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 15:59:13.26 ] どれもタグの中にあるように見えます。 タグ以外ということでしょうか?
298 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 16:04:40.91 ] タグ以外ということでOKです。あと改行が含まれているのでその辺はどうなるでしょうか?
299 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 16:27:06.78 ] 対象データがダメダメじゃん。
300 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 16:55:21.70 ] まあ、タグの定義を細かくやると書ききれない話になるので、 var list = from x in System.Text.RegularExpressions.Regex.Split( text,"<.*?>", System.Text.RegularExpressions.RegexOptions.Singleline) where x!="" select x ; 程度でいいのならこれで。
301 名前:デフォルトの名無しさん mailto:sage [2012/10/02(火) 09:54:42.29 ] よろしくお願いします。 ●正規表現の使用環境 サクラエディタ bregonig.dll Ver.3.02 ●検索か置換か? 検索 ●説明 "START"から"END"に囲まれた"HOGE"を最短一致(というのか?)で含まれる行を検索したい ●対象データ 1.xxxxxxxSTARTyyyyyyyyHOGEzzzzzzzzzzzENDaaaaaaa 2.xxxxxxxSTARTyyyyyyyyENDbbbbbbbHOGEzzzzzzzzzzzENDaaaaaaa ●希望する結果 1.だけマッチ 2.は"END"が"HOGE"の前に入ってるのでマッチ対象外
302 名前:デフォルトの名無しさん mailto:sage [2012/10/02(火) 10:40:02.40 ] 1の小文字部分にENDがないものと解釈した場合 ^((?!END).)*?START((?!END).)*?HOGE((?!END).)*?END((?!END).)*?$
303 名前:301 mailto:sage [2012/10/02(火) 12:16:03.97 ] >>302 ありがとうございます。 なるほど、((?!END).)*?の部分がポイントですね。 えと、すみません説明が不十分でした。 ・1.の"yyyyyyyy"部分以外の小文字部分いずれかに"END"があってもマッチ ・1.の"zzzzzzzzzzz"部分に"END"があればそこまで(最短で)マッチ ・1.の小文字部分いずれかに"START"があっても"START〜HOGE〜END”の最短パターンでマッチ ・1.と2.の複合(1.の後ろに2.のパターンとかその逆とか)の場合でもマッチ (条件がまだ足りてなかったり、冗長だったりするかもしれませんが)の場合は、レスの答えを参考に START((?!END).)*?HOGE.*?END として試してるところですが、これで良いのかな?
304 名前:デフォルトの名無しさん mailto:sage [2012/10/02(火) 12:48:40.42 ] >>303 条件を満たす行だったので START((?!END).)*?HOGE.*?END は STARTとHOGEの間にENDがなくHOGEの後ろにENDが少なくともひとつある つまり、このマッチする部分の前か後ろ、HOGEとENDの間に *STARTとHOGEの間にENDがある部分* があっても良ければそれで
305 名前:301 mailto:sage [2012/10/02(火) 14:59:07.75 ] >>304 > 行だったので あぁー!自分で「行を検索」と書いてました。すみません。正確には「部分を検索」です。 > このマッチする部分の前か後ろ、HOGEとENDの間に > *STARTとHOGEの間にENDがある部分* があっても良ければそれで えと、波下線(~~~)をマッチ対象部分とすると、 a. このマッチする部分の前か後ろに *STARTとHOGEの間にENDがある部分*がある a-1:STARTaaaaaENDbbbbbHOGEcccccSTARTdddddHOGEeeeeeEND (前にある場合) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ a-2:STARTaaaaaHOGEbbbbbENDcccccSTARTdddddENDeeeeeHOGE (後ろにある場合) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ b. HOGEとENDの間に *STARTとHOGEの間にENDがある部分* がある b-1:STARTaaaaaHOGEbbbbbSTARTcccccENDdddddHOGEeeeeeEND ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ a,bいずかでも良ければ、と解釈しました。 a,bとも下線のように、期待通りにマッチしていますが、 誤解とか頓珍漢な事を言ってるようなら、何なりと指摘してください。 国語が苦手なうえに回転が悪くてスミマセン(´・ω・`)
306 名前:デフォルトの名無しさん mailto:sage [2012/10/02(火) 15:13:22.64 ] STARTaaaaaHOGEbbbbbENDcccENDで最短にならないぐらいかな
307 名前:301 mailto:sage [2012/10/02(火) 15:18:10.19 ] 連投スミマセン。 START((?!END).)*?HOGE.*?END を使っていろいろやってみてる最中ですが、(波下線部分がマッチ対象部分) xxxxxxxSTARTyyyyyyyyHOGEzzzzzzzzzzzSTARTaaaaaaHOGEbbbbbbbENDcccccccc a~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ b~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 上のケースでは、aの部分がマッチしてしまうようです。 bの部分をマッチさせたかったのですが… START((?!END).)*?HOGE((?!START).)*?END "HOGE"と"END"の間に"START"は無しを条件にすればと 解らないなりに、こうか?wとやってみたのですが、結果は変わりませんでした_ノ乙(、ン、)_
308 名前:デフォルトの名無しさん mailto:sage [2012/10/02(火) 15:21:24.72 ] その場合は、 ((?!END).)*? が yyyyyyyyHOGEzzzzzzzzzzzSTARTaaaaaa にマッチするので
309 名前:デフォルトの名無しさん mailto:sage [2012/10/02(火) 15:31:58.02 ] START HOGE ENDの間に許容される条件が分からないので・・・ START((?!START|HOGE|END).)*?HOGE((?!START|HOGE|END).)*?END だと?
310 名前:301,303,305,307 mailto:sage [2012/10/02(火) 17:21:33.52 ] レスありがとうございます。 相変わらずの長文でゴメンナサイ >>306 えと、こちらの環境だと STARTaaaaaHOGEbbbbbENDcccEND と最短でマッチしています… ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>308 > ((?!END).)*? が yyyyyyyyHOGEzzzzzzzzzzzSTARTaaaaaa にマッチするので HOGE.*?ENDの部分で短めにマッチするからということですかねムツカチ━━━(;´д`)━━━イィィ >>309 ぉおおっ! > START((?!START|HOGE|END).)*?HOGE((?!START|HOGE|END).)*?END だと? を見てなんとなくわかったような気がしてるような気がします。 > 許容される条件が分からないので・・・ ずびばぜん。゚(。ノωヽ。)゚。まとめます。>>303 みたいに書かずに *マッチ対象部分では* 1)"START"と"END"の間は、"START"と"END"は出現しない 2)"HOGE"は一つ以上出現しても良い でよいのかな?やっぱりなんか混乱してるかも…σ(・´ω・`;)アハアハアハ ということで、 START((?!START|END).)*?HOGE((?!START|END).)*?END こうですかね?これで様子を見ます。本当にありがとうございました。
311 名前:sage [2012/10/08(月) 18:38:19.35 ] ●正規表現の使用環境 練馬、nemery等のリネームソフト 可能なソフトに乗り換えようと思ってます ●検索か置換か? 置換 ●説明 1.ファイル名末尾の数字が1桁の場合、0をつける。2桁の場合はそのまま ファイル名途中の数字はスルーさせたい 2.特定の文字(例では#)から特定の文字(例では-)の前までを削除したい ●対象データ キリン#◯☓動物園-10月1 しろくま#△☓◯動物園-5月12 猫(2匹目)#我が家-11月5 ●希望する結果 キリン-10月01 しろくま-5月12 猫(2匹目)-11月05 よろしくお願いします
312 名前:デフォルトの名無しさん mailto:sage [2012/10/08(月) 19:12:51.17 ] 練馬 SJIS版 1 s/(?<![0-9])([0-9]{1})$/0\1/k 2 s/#.*-/-/k
313 名前:デフォルトの名無しさん mailto:sage [2012/10/08(月) 20:02:16.41 ] >>312 ありがとうございます 練馬で頑張ってみますね
314 名前:デフォルトの名無しさん [2012/10/11(木) 18:53:52.96 ] tで始まる文字列を文頭のthe[スペース]を無視して検索する場合 ^t[^h]|^th[^e]|^the tが思いついたけど、もっといい正規表現ありますか? 環境はActive Perl5で否定演算子!は使えません
315 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 18:59:56.47 ] >>314 の訂正 ×^t[^h]|^th[^e]|^the t ○^t[^h]|^th[^e]|^the[^ ]|^the t ×の正規表現だと"there"とかがヒットしなくなってしまう。失礼しました よろしくお願いします
316 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 20:17:23.53 ] lookbehindが使えないって意味じゃないよな? (?<!^the )t
317 名前:デフォルトの名無しさん [2012/10/11(木) 21:09:22.06 ] >>316 レスありがとうございます (?<!^the )tを使ってみましたがうまくいきませんでした lookbehindは知りませんでした、勉強していろいろ試してみようと思います
318 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 21:35:20.97 ] (?!^the\b)\bt\w+ こう?
319 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 21:51:37.73 ] /(?!the )t\w+/ これだと末尾のtheという単語拾うけど
320 名前:デフォルトの名無しさん [2012/10/11(木) 21:55:51.23 ] >>318 たびたびすいません それもうまくいきませんでした。文字列の途中の"t"もヒットしているようです "abc this def"とかもヒットして"t"で始まる文字列のみのヒットにはなってないです
321 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 22:18:05.08 ] >>320 文頭のtheを除くtで始まる語全てを拾うようにした(=そうなるようにした)んだけど ものすごく要件読み違えてたのか
322 名前:デフォルトの名無しさん [2012/10/11(木) 22:31:43.65 ] >>321 "文頭のtheを除くtで始まる語全てを拾う"でいいんですけど 僕の環境だと(?!^the\b)\bt\w+でもうまくいかないんです やりたいことは"the abc"とかは排除して"the tuv"や"there"や"tabc"とかはヒットさせたいということです 配列の各文字列を検索してるんですが、配列には"abc this def"や"abc the def" とかも入ってます
323 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 22:38:34.31 ] ^(?!the\b)t\w+ こうなのか?
324 名前:デフォルトの名無しさん [2012/10/11(木) 22:47:53.42 ] >>323 それでほぼヒットしたんですが、"the t"で始まる("the "の後に"t"で始まる) 文字列だけがヒットしてないです たびたびすいません
325 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 22:49:02.16 ] >>322 うーん自分は"文頭のtheを除くtで始まる語全てを拾う"だと思ったから > "abc this def"や"abc the def" このthisやtheにもマッチさせてたんだよ "the tuv" は tuv でマッチすべきだけど "abc tuv def" なら tuv にはマッチしちゃいけないのか
326 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 22:53:18.24 ] ^(?:(?!the\b)t\w+|the t\w+) >>323-324 を見たらこうなったけど要件はわかってない
327 名前:デフォルトの名無しさん [2012/10/11(木) 23:01:51.10 ] >>325 わかりにくくてすいません 配列内の文字列全体で"文頭のtheを除くtで始まる語全てを拾う"であって ワード単位で"文頭のtheを除くtで始まる語全てを拾う"ではありませんでした "abc tuv def"はマッチさせません。あくまで配列内の文字列全体で"t"で始まるです 配列内の文字列の最初が"t"で、最初の"the "は無視するということです
328 名前:デフォルトの名無しさん [2012/10/11(木) 23:08:33.82 ] >>324 訂正 "the t"で始まる("the "の後に"t"で始まる)文字列だけでなく "t'abc"や"t.a.b.c"などがヒットしてなかったです >>326 レスありがとうございます "the t"で始まる文字列もヒットしましたが、"t'abc"や"t.a.b.c"などがヒットしていないです
329 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 23:12:26.40 ] \w はおせっかいだったのか ^(?:(?!the\b)t|the t)
330 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 23:17:51.66 ] "the the"の場合は?
331 名前:デフォルトの名無しさん [2012/10/11(木) 23:21:45.68 ] >>329 ありがとうございます。すべてヒットしました 正規表現は初心者で"|"を多数使って力技でヒットさせてました もっと正規表現の勉強が必要だと痛感しました >>330 それは想定していませんでしたw 最初の"the "だけを無視ということで・・・
332 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 23:33:28.55 ] t.A.T.u. 最初からテンプレに沿って例題集を提示して欲しかったな。>>311 みたいに。 今度からはそうして。 …thereだけでなくthe:4にもヒットしてくれとか、もう言わないよね?
333 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 23:39:21.03 ] ちょw >>331 否定演算子!を使えなかった理由は?
334 名前:デフォルトの名無しさん [2012/10/11(木) 23:40:21.32 ] >>332 拙速な質問ですいませんでした。以後気をつけます the:4はヒットしなくていいです どうもありがとうございました
335 名前:デフォルトの名無しさん [2012/10/11(木) 23:45:15.76 ] >>333 理由はわかりません。僕の環境では/^t!h/で検索してみても"tuv"や"true abc" などがまったくヒットしないです
336 名前:デフォルトの名無しさん mailto:sage [2012/10/11(木) 23:51:00.06 ] >>335 Perlの否定演算子って、 !~ とかを指してるんじゃなかったのかw そりゃ無理っしょ
337 名前:デフォルトの名無しさん [2012/10/11(木) 23:55:30.32 ] >>336 すいません、perlも最近使い始めたばかりであまりよくわかってないです 勉強してみます
338 名前:デフォルトの名無しさん mailto:sage [2012/10/12(金) 21:35:10.48 ] /\*[^*]*\*+([^/*][^*]*\*+)*/ Cのコメントをとりのぞく 詳説 正規表現 p.192 p.326
339 名前:こんまけ mailto:sage [2012/10/13(土) 10:48:59.23 ] \*+の後なら[^*]なので。 /\*[^*]*\*+([^/][^*]*\*+)*/ じゃダメな理由とか例は出せられます?
340 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 12:06:56.17 ] 339のだと/****/*/みたいのにもマッチできるので良くない。 単独でマッチさせるだけだと普通の正規表現エンジンなら /****/の部分まででマッチしちゃってそっから先には行かない けど、他の正規表現を前後につけると違いが出てくると思う。 例えば全体を^と$で挟むとか。
341 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 13:25:10.54 ] コンパイラの構文解析機を使うのが確実。自分のコーディングルールだけで使うなら、自分のツールボックスにしまっておけばいい。
342 名前:339 mailto:sage [2012/10/13(土) 15:38:32.78 ] れすさんくす、 338 も 339 もベストじゃなくて、339 が 338 よりベターなんですね。 例えば、コメントの後ろにAという文字がある場合を検索したいとか…
343 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 20:26:20.34 ] AAA : BBBB CCCC DDD1[0] DDD2[1] DDD3[2] DDD4[3] がある場合にDDD1[0] DDD2[1] DDD3[2] DDD4[3]のみ取得したい。 もしくはAAA : BBBB CCCC を削除したいです。 よろしくお願いします。
344 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 20:54:07.95 ] >>343 DDD\d\[\d\]
345 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 21:38:35.67 ] 環境書かない方も悪いけど、互換性低い\dで回答するのはどうなんだろう
346 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 21:47:54.77 ] 正規表現における # ってどんな意味を持つのですか?
347 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 21:50:54.31 ] >>346 #
348 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 21:59:51.01 ] >>345 ごめん。 \d=[0-9] 質問から察するに、数字部分は可変だろうね。
349 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 22:00:36.84 ] >>346 特に意味なし。単なる「#」という文字。
350 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 22:05:33.99 ] >>347 >>349 ありがとうございます
351 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 22:07:23.75 ] >>345 \dが[0-9]でないのって、どんなのがあるの?
352 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 22:22:42.43 ] >>351 秀丸はバージョン7あたりまで\dとか\sあたりが使えなかった grepとかsedコマンドとかviエディタ内の正規表現とか まあこの辺になってくると()や|の前にバックスラッシュつけないと 正規表現として機能しないという点でも非互換だけどもw
353 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 22:37:04.96 ] >>351 鬼車や鬼雲の\dは[0-90-9]と等価 Ruby 1.9系の正規表現エンジンは鬼車だけどカスタマイズされたフォーク版なので、\dを [0-9]と等価になるように修正してある
354 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 23:25:52.84 ] >>352 なるほど。 古めのエンジン、正規表現の源流に近いあたりでは\dは無いのね。 しかし秀丸バージョン7って、かなり最近じゃ。ちょっとひどいな。 >>353 そうなのかー。 先進的すぎても主流との互換性の点で問題あるよね。
355 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 23:41:43.03 ] >>353 >鬼車や鬼雲の\dは[0-90-9]と等価 うお、なんかイメージよりも範囲広すぎ。 敢えて[0-9]って書いといた方が無難なのね。
356 名前:デフォルトの名無しさん mailto:sage [2012/10/13(土) 23:51:08.46 ] >>353 鬼雲は(?u),(?a)でUnicodeの範囲かASCIIの範囲かを制御できる。 \d,\s,\wがUnicodeの範囲でマッチするのはPerlに合わせた仕様。
357 名前:デフォルトの名無しさん mailto:sage [2012/10/24(水) 21:11:42.58 ] ●正規表現の使用環境 MSVC2012 / .NET Framework 4.5 ●検索か置換か? 検索 ●説明 「|」「(」「)」が文字として入っているデータから、特定の文字列を抜き出したい。 ●対象データ area|name (value) tokyo|yamada benzo (123) kyoto|namae tarou (21) saga|shitemo mitukaranai you (7) ●希望する結果 area, name, value "tokyo", "yamada benzo", "123" "kyoto", "namae tarou", "21" "saga", "shitemo mitukaranai you", "7" このように取り出したいのですが、どのように書くとよいでしょうか
358 名前:デフォルトの名無しさん mailto:sage [2012/10/24(水) 21:20:10.28 ] カッコの整合を取りたいのでなければ "tokyo|yamada benzo (123)".Split(new char[] { '|', '(', ')' },StringSplitOptions.RemoveEmptyEntries) でよかったりしない?
359 名前:デフォルトの名無しさん mailto:sage [2012/10/24(水) 22:06:41.28 ] >>358 あ、本当ですね…。 このやり方のほうがさっぱりしてていいですね。 こちらでやらせてもらいます。 解決できちゃいました。 どうもありがとうございました。
360 名前:デフォルトの名無しさん mailto:sage [2012/11/01(木) 12:21:53.25 ] あー! 正規表現で空白を縮めればいいのか
361 名前:360 mailto:sage [2012/11/01(木) 12:23:30.20 ] すみません自己解決しました
362 名前:デフォルトの名無しさん mailto:sage [2012/11/06(火) 14:38:40.09 ] 「CDATA」を含まない行を検索したいのですが、先読み否定を使用しましたがうまく検索できませんでした。 ^(?!.*?CDATA) 指定文字列を含まない行をどのような指定で検索できるでしょうか?
363 名前:デフォルトの名無しさん mailto:sage [2012/11/06(火) 14:42:14.02 ] つ[grep -v]
364 名前:デフォルトの名無しさん mailto:sage [2012/11/06(火) 14:48:45.45 ] >>362 自己レス Java → × サクラエディタ → ○ Javaの問題?
365 名前:デフォルトの名無しさん mailto:sage [2012/11/06(火) 15:13:49.63 ] ^((?!CDATA).)*$
366 名前:デフォルトの名無しさん mailto:sage [2012/11/09(金) 22:58:08.67 ] ●正規表現の使用環境 perl5 ●検索か置換か? 置換 ●説明 keyとvalueの間はコロン区切り、keyとvalueのペアの間はカンマ区切りになっている key1:value1,key2:value2,key3:value3 という形式で書かれている文字列で、 指定したkeyに対応するvalueの値を取得したい。 ・valueの文字列にはコロンやカンマが入っている可能性があるので、それを区切り文字にはできません。 ・valueの文字列は、:value:や,value,のように、先頭や末尾がコロンやカンマの可能性があります。 ・key3:value3,key2:value2,key1:value1 のように順番は変わる可能性があります。 ・keyとvalueのペアは、何個あるかはわかりません。0個の場合もあり。 ・指定するkey以外のkeyについても、何があるかはわかりません。 ・keyもvalueも可変長で、valueが空という場合もあります。 ●対象データ AAA:V,:1,BBB:V,,::2,CCC:V,,,:::3,DDD:,V4:,EEE: ●希望する結果 AAAをkeyとすると、V,:1 BBBをkeyとすると、V,,::2 CCCをkeyとすると、V,,,:::3 DDDをkeyとすると、,V4: EEEをkeyとすると、空 FFFをkeyとすると、空 3日くらい試行錯誤してますが、全然解決できず気が狂いそうです・・・ 完全に、論理的に無理ゲーでしょうか?
367 名前:デフォルトの名無しさん mailto:sage [2012/11/09(金) 23:36:12.98 ] 値(orKey)にデリミタがエスケープ無しで出るなら区別できないんじゃね? 例に挙げているのでも DDD=空 V4=空 EEE=空 と言う解釈も出来る(FFFは存在しないKey)
368 名前:デフォルトの名無しさん mailto:sage [2012/11/09(金) 23:40:02.61 ] >>366 素直にsplitしたら負け?
369 名前:デフォルトの名無しさん [2012/11/10(土) 00:32:09.53 ] デリミタ制限してないなら無理ゲーだろ V,:1,BBB:V,,::2,CCC:V,,,:::3,DDD:,V4:,EEE: たとえば↑これ全体がAAAのvalueならどこで切れるんだよ
370 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 02:57:15.54 ] > DDDをkeyとすると、,V4: これは何故なんだ?書かれてる条件だけ見ると >>367 が書いてる通り DDD=空 になるように思える そこが明確にならなければ正規表現使うどころか 実直に一文字ずつパースしても無理に思える
371 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 03:57:23.97 ] 手作業でやっても一意に決まらないようなのはどうしようも無いぞ
372 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 12:21:33.25 ] 正規表現がどうのより、データの出力形式を見直したほうがいいな。 表計算ソフトのCSVの出力形式とか参考にしてさ。 正直、正規表現の出番以前の問題だよ。まずは論理的で明確なデータを用意するべき。
373 名前:366 mailto:sage [2012/11/10(土) 21:43:20.41 ] >>367 , 368, 369, 370, 371, 372 たくさんのレス、アドバイスありがとうございます。お礼が遅くなりすみません >>367 , 369 やはり、デリミタが値の中に出てくる時点で、無理なデータぽいですよね。 >>368 splitするにも、カンマがデータ中に出てきたりするもので・・・ >>370 「,V4:」という部分が、データなのです。この場合のカンマは、デリミタではなく値でして・・・ >>371 , 372 やはり、論理的に矛盾したフォーマットですよね・・・ 結論として、とりあえずsplitでパースしたものがだいたい正常になるので、後は目視・手作業でやることにしました。 無茶苦茶なフォーマットのデータを置いて行った前任者を恨みます・・・
374 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 21:51:25.57 ] , と : がデータの一部として使われるときにある程度の規則性があるならそれを利用して判別 するといいかもね。まぁこれにも限界があるし誤爆の可能性もあるから目視は必須だけどね。
375 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 22:08:21.52 ] 前任者がキ印とかカワイソス
376 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 01:40:44.89 ] 目視で決められるのなら何か規則性があるんじゃないの? キー名だと分かる何かが?
377 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 01:44:41.01 ] 値に隠された制約があるはず。 でなければ目視で出来ない。
378 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 18:42:00.12 ] わからない時は古くからいる人に聞く、 これも「目視」のうちに入るのかもしれんしな。
379 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 20:50:46.82 ] >>376 文脈で判断だと、規則が膨大になりすぎるんじゃない。
380 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 22:40:27.53 ] ●正規表現の使用環境 perl ●検索か置換か? 置換 ●説明 1文字だけのAを空白に置換(または削除)したい ●対象データ appleAisAdeliciousAAA ●希望する結果 apple is deliciousAAA 前後に同じ文字が連続していない場合、その文字だけを消したいです。
381 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 22:53:00.61 ] 先頭のaも消してよければコレ (?<!a)a(?!a)
382 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 22:54:55.34 ] あ、大文字だけか。 perlはよくわからんけどオプションかなんか指定して aをAにすりゃたぶん大丈夫
383 名前:380 [2012/11/11(日) 23:15:05.09 ] >>382 ありがとうございます。 先頭にAがあると消えてしまいますが、教えて頂いた方法でできました。 $string =~ s/(?<!A)A(?!A)//g; という文です。 できれば、先頭のAが消えないパターンが理想なので、 引き続きアドバイスを募集させてください。
384 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 23:27:49.74 ] んじゃ、これでは? (?<!^|A)A(?!A)
385 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 00:15:19.92 ] >>384 ありがとうございます。 ただ、こちらの表現は「Variable length lookbehind not implemented in regex」 というエラーになって実行できませんでした。 どうやら、戻り読み?というものに対応できていないようです。 環境を書き忘れましたが、xammpを入れてperl 5.16.1で実験してます。
386 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 03:15:42.78 ] もっと原始的に、これはどうか。 (^|[^A])A([^A]|$) \1 \2 \1\2 ただ、よく分からないのは >前後に同じ文字が連続していない場合、その文字だけを消したいです。 文字? 置換対象はAだけだよね?
387 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 03:20:51.76 ] あれ、>>383 をよく読んでなかった。 >先頭のAが消えないパターンが理想 条件追加/変更なら改めて例示をやり直してくれるとありがたいんだけど。 これならいいかな? ([^A])A([^A]|$)
388 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 07:19:30.62 ] (?<!^)(?<A)A(?!A)
389 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 10:32:08.35 ] ( ´д)ヒソ(´д`)ヒソ(д` )
390 名前:388 mailto:sage [2012/11/12(月) 11:02:29.20 ] すまん。!が抜けてた。(?<!A)
391 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 16:00:51.00 ] テストしてから書き込んでないってのがよく分かるな。せめて動作確認してから貼れよ。
392 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 18:33:07.61 ] ちょっとかっこ悪い (?<=.)(?<!A)A(?!A)
393 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 18:52:46.82 ] 戻り読みより\K使えよ 固定長の必要なくなるぞ
394 名前:デフォルトの名無しさん mailto:sage [2012/11/12(月) 20:55:01.12 ] perlなら文字列操作関数で頑張ればいいのに。人に聞けばいいや、はイカン。
395 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 14:27:21.57 ] 同じ英数字が4文字以上、の正規表現は(a{4,}|b{4,})…と地道に指定しないとダメでしょうか?
396 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 15:29:29.79 ] ●正規表現の使用環境 php ●検索か置換か? 置換 ●説明 2文字目以降の「.」以外の数字を「*」に置換したい。 ●対象データ 12.34 ●希望する結果 1*.**
397 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 19:52:54.79 ] >>395 ([a-zA-Z0-9])\1{3,}
398 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 21:00:56.65 ] >>396 \G使え。
399 名前:デフォルトの名無しさん mailto:sage [2012/11/18(日) 11:15:26.52 ] ●正規表現の使用環境 jruby1.7.0 ●検索か置換か? 検索 ●説明 <abc def/>とあるようなタグを検索したい ●対象データ <bbb><aaa><abc/></aaa></bbb> ●希望する結果 <abc/> タグ内の文字列は記号を含んだ任意の文字列です <.*?\/> とすると <bbb><aaa><abc/> とか <aaa><abc/> とかでヒットするのでどうにか <abc/> だけでヒットさせることができないものでしょうか?
400 名前:デフォルトの名無しさん mailto:sage [2012/11/18(日) 11:21:39.09 ] その説明だと /<abc¥/>/ でいいんじゃねーのとしか読めないなw
401 名前:デフォルトの名無しさん mailto:sage [2012/11/18(日) 11:41:03.34 ] ほれ <[^<]*\/> 例であげてた<.*?\/>の?はなんか意味あるの?
402 名前:デフォルトの名無しさん [2012/11/18(日) 11:44:52.55 ] 質問者の環境で使えるかどうかは知らんが最小マッチな
403 名前:デフォルトの名無しさん mailto:sage [2012/11/18(日) 12:03:56.89 ] >>401 できましたありがとうございます! ^は行頭の意味で覚えていたので思いつきませんでした… ?は一応、後ろの方に対して最小一致のつもりでした
404 名前:デフォルトの名無しさん mailto:sage [2012/11/18(日) 12:37:00.59 ] 量指定子のオプション ? が「ものぐさマッチ」である好例だね。 最小/最短という言葉だと、一番短くなる箇所でマッチするのかと誤解して覚えてしまう。 本当の最短マッチを探索する環境もあったような?
405 名前:デフォルトの名無しさん mailto:sage [2012/11/18(日) 13:32:55.34 ] あー最小一致か。あったね、そういえば。 (個人的には)あんまり使わないからすっかり忘れてた
406 名前:デフォルトの名無しさん mailto:sage [2012/11/18(日) 14:56:08.36 ] xxxは長さも値もランダムな文字列で hoge+xxx/fuge+xxx/test+xxx ↓ hoge+xxx/fuge+xxx や hoge+xxx/test+xxx や fuge+xxx/test+xxx としたいのですが、例えばfuge+xxx/test+xxxとしたいとき hoge.+(/)?とやるとfugeもtestも削除されてしまうんですがどうすればいいのでしょうか? .に/も含まれてしまうのが問題だと思うのですが
407 名前:デフォルトの名無しさん [2012/11/18(日) 15:01:22.03 ] >>406 環境書いて欲しいところだが「.+」の代わりに [^/]+ か [^\/]+ でどうよ?
408 名前:406 mailto:sage [2012/11/18(日) 15:13:14.89 ] >>407 できました!ありがとうございます! その考え方は無かったです
409 名前:407 mailto:sage [2012/11/18(日) 15:36:08.79 ] >>408 どういたしまして ところで>>399 と>>406 は同一人物?
410 名前:406 mailto:sage [2012/11/18(日) 15:38:57.16 ] 自分はphpでしたが似てますね もっとよーく見てから質問するべきでした
411 名前:407 mailto:sage [2012/11/18(日) 16:20:51.12 ] >>410 同一人物でなかったのならお気になさらずに さすがに同一人物だったら>>401 の意味を自分で理解しようよって感じでしたが
412 名前:デフォルトの名無しさん mailto:sage [2012/11/19(月) 12:25:00.01 ] Windows用で正規表現に対応したファイル検索ソフトってありませんか?
413 名前:デフォルトの名無しさん mailto:sage [2012/11/19(月) 12:28:56.30 ] たくさんあるよ。
414 名前:デフォルトの名無しさん mailto:sage [2012/11/19(月) 18:10:37.09 ] コマンドプロンプトからperlやphpでも行けそう。 フリーソフトなら腐るほどありそう。
415 名前:デフォルトの名無しさん mailto:sage [2012/11/19(月) 22:47:26.62 ] >>396 対象データって小数点以下がある数字? それともIPアドレスみたいに . が複数存在する場合もある? 00.1 ←数字ではあり得ない並び 1.2.3 ←ピリオドが2つ以上あるデータ 1.2. ←ピリオドで終わるデータ こういうデータは置換対象にする?しない?
416 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 10:31:38.08 ] ↑今日中に応答がない場合はもうこのスレ開くことないと思うのでご了承ください。。
417 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 16:30:04.26 ] 正規表現使うべき所じゃないよねぇ
418 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 17:13:22.83 ] s/(?!^)[^.]/#/g
419 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 18:43:16.52 ] >>417 いえ、普通に使えるケースです。 >>418 これだと数字とピリオド以外の文字がデータに存在した場合、意図しない動作になってしまいます。 (文頭に半角スペースが入った場合など)
420 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 19:01:50.50 ] 小出しェ
421 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 20:06:03.18 ] シェルスクリプトスレより誘導されてきました 以下のような文章があったとします 〜aaa〜bbbaaa〜bbbaaa〜bbb〜 (〜は文字数の定まっていない文字列を表しています。) ここから、それぞれ最初のaaa〜bbbだけを抽出、真ん中のaaa〜bbbだけを抽出、最後のaaa〜bbbだけをgrep -oなどで抽出したい時、どう正規表現で表せばよいのでしょうか?
422 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 21:13:44.65 ] >>421 言語は何?あと与えられたテキストがaaaa〜bbbbだったらどこでaaaとbbbを区切るの。
423 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 21:41:53.58 ] 必ず3回aaa〜bbbが出てくるの? もうチョイ詳しく書いてくれないとどうにも どっちにしろ正規表現以外のサポートが受けれるなら そっちと組み合わせたほうがはやいと思うよ
424 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 00:57:30.56 ] >>422 言語というかunixのシェルスクリプトです 与えられたテキストが、とはどういう事でしょうか? 〜以外の部分は上記の文で確定しています aaa〜bbbaaa〜bbbaaa〜bbbは何回続くのかは確定していません この文自体を正規表現で表すとこんな感じだと思います .*(aaa.*bbb)+.* この中からn番目のaaa.*bbbだけを抽出したいのですが無理でしょうか?(実際にはaaaとbbbの間の文字列を取得したいです) 説明が下手で申し訳ありません・・・
425 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 01:20:15.05 ] >>424 質問の意図は分かったけどシェルスクリプトで使える正規表現を知らないから それを調べるのにちょっとかかりそう。それさえ分かれば簡単なんだけどねw
426 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 02:17:30.96 ] >>424 ある程度調べた。grep -P オプションが使えない環境では無理。 普通のgrepだと (aaa.*bbb)+ とかでおおざっぱに取り出すことしか出来ないね。 unixにperlインスコしてperlの正規表現で処理すれば簡単なんだけどな。 参考にしたサイト linuxjm.sourceforge.jp/html/GNU_grep/man1/grep.1.html
427 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 10:50:11.06 ] aaa[^b]*bbb でぶった切って、煮るなり焼くなり。
428 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 11:29:13.52 ] 最初のaaaより手前と最後のbbbより後をsedで切り落とせば、あとはawkで bbbaaaを区切りに指定して$1でも$2でも好きなの取り出せるよ sed 's/^¥([^a]¥|a[^a]¥|aa[^a]¥)*aaa//'|sed 's/bbb¥([^b]¥|b[^b]¥|bb[^b]¥)*$//' | awk -Fbbbaaa '{print $2}'
429 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 12:16:09.86 ] マルチ toro.2ch.net/test/read.cgi/unix/1039165754/814
430 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 13:33:13.02 ] 向こうに山崎渉がいたぞ。 もうすぐ10周年って、どんだけ長持ちなスレなんだよ。 toro.2ch.net/test/read.cgi/unix/1039165754/29
431 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 17:11:37.20 ] >>426 grep -Pは使える環境です! >>427-428 ありがとうございます!参考にさせてもらいます>>429 それ僕じゃないです
432 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 19:43:02.39 ] >>431 perlそのままで書くと↓ ((?!aaa).)*(aaa((?!bbb).)*bbb){1}aaa\K((?!bbb).)*(?=bbb) ただしシェルスクリプトだと\Kが使えない可能性が高いな・・その場合は>>428 さんので。 {1} の数字を変えると取り出したい組み合わせを何番目にするか調整出来る。 { } の中には 「取り出したい何番目かの数字」 - 1 を入れる。1番目なら0、2番目なら1、3番目なら2・・・
433 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 19:45:39.38 ] 基本正規表現で十分だろ aaa[^b]*\(b\{1,2\}[^b]\+\)*b\{0,2\}bbb
434 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 19:58:50.64 ] >>432 はgrep -oで取り出すのを前提にしてます。 $1や$2で取り出せるならもっとシンプルに書けるんですけどね・・
435 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 21:34:51.99 ] aaa123bbbbaaa456bbb これから123bを正しく取り出すには..
436 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 21:47:14.20 ] echo 'aaa123bbbbaaa456bbb' | grep -o 'aaa[^b]*\(b\{1,2\}[^b]\+\)*b\{0,2\}bbb' | sed -e 's/^aaa//' -e 's/bbb$//'
437 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 22:08:47.89 ] >>398 これJavaの正規表現だとどうなりますか?
438 名前:デフォルトの名無しさん mailto:sage [2012/11/22(木) 00:30:07.28 ] >>432 上手く動作しなかったので>>428 さんのを使わせてもらいます!色々ありがとうございました 最後に、 〜aaa〜bbb〜aaa〜bbb〜aaa〜bbb〜 からn番目のaaa〜bbbを抽出する方法を教えてもらえるとありがたいです
439 名前:デフォルトの名無しさん mailto:sage [2012/11/22(木) 01:58:36.36 ] >>437 phpと同じでおk。
440 名前:デフォルトの名無しさん mailto:sage [2012/11/22(木) 07:15:21.91 ] >>438 スクリプトで式を生成する。
441 名前:デフォルトの名無しさん mailto:sage [2012/11/22(木) 21:25:36.85 ] \Gの使い方は↓参照。 rs0032.zip【ノウハウ】まとめ (正規表現のメモ的なもの) www42.tok2.com/home/proxo/rep/ ↑は↓のツールで開くか、テキストエディタで開くと読める。 1st.geocities.jp/neeetest/jane.html
442 名前:デフォルトの名無しさん mailto:sage [2012/11/24(土) 04:35:57.17 ] >>440 スクリプトで式を生成する、とはどういう事でしょうか?教えてもらえるとありがたいです
443 名前:デフォルトの名無しさん mailto:sage [2012/11/24(土) 08:49:57.78 ] 横だけど。 >>442 nが3のとき、4のとき、5のとき……って、必要なコマンドが全て違うわけだ。 でも、よ〜く見てみると完全に別のコマンドって訳じゃなくて、法則性があったりする。 だったらこの法則性を利用して、コマンドの文字列自体を出力するプログラムを書いてしまえということ。
444 名前:デフォルトの名無しさん mailto:sage [2012/11/24(土) 12:37:22.12 ] 自分で正規表現作れるようになろうっていう意思がまるっきり感じられないのがなぁ。 ただのクレクレには答える気ないというのが総意だろう。
445 名前:デフォルトの名無しさん mailto:sage [2012/12/06(木) 19:13:37.62 ] ruby初心者です テキスト中の指定した記号を削除したいのですが text = 任意のテキストファイルにしておいて text2 = "#{text}".gsub(/[\[\]\(\)\/"「」!@`~-.]/, "") と書くと invalid regular expression: /[\[\]\(\)\/"\242\243!@`~-.]/ となってしまいます ついさきまでなんのエラーもなくできていたのですがどこがおかしいのでしょうか
446 名前:デフォルトの名無しさん mailto:sage [2012/12/06(木) 21:52:13.08 ] マイナスでは。 "#{text}".gsub(/[\[\]\(\)\/"「」!@`~.-]/, "") "#{text}".gsub(/[\[\]\(\)\/"「」!@`~\-.]/, "")
447 名前:デフォルトの名無しさん mailto:sage [2012/12/06(木) 22:03:00.61 ] >>446 本当だ… なんでさっきまでできてたんだろう 間違ってマイナス追加しちゃったのかもしれないけど記憶にないw ありがとうございました助かりました
448 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 18:23:57.54 ] 質問良いでしょうか? サクラエディタの置換処理の[該当行マーク]で取得範囲のテストをしています。 フルパスからドライブレターや(ネットワーク越しの)PC名を一発で切り出したいのですが どのようにすれば良いでしょうか? c:\windows\system32\drivers\etc\hosts \\安藤PC\共有\excelデータ\ といった環境で、[c]や[安藤PC]を切り出したいです。 ([^\\]+?)[\\:] と言うところまでこれたのですが、 行内で複数一致してしまい、うまく切り出せません。
449 名前:デフォルトの名無しさん [2012/12/08(土) 19:15:47.14 ] テストは一切してない こんな感じか? ^( ([^\\ ]+): #頭から:の手前までの(*\と半角スペース*以外で1字以上) | \\\\([^\\\: ][^\\\:]*) #頭の\\の次から(*\と半角スペース*以外で1字)(*\と:と半角スペース*以外で1字以上) )
450 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 19:40:05.98 ] >>448 文字クラスの外で使う^が行頭ってことがわかれば 自力でいけそうな感じだな、がんばれよ。
451 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 20:03:40.80 ] >>449 返信ありがとうございます しかしながら[c:][\\安藤PC]となってしまい、コロンや\\が残留するようです。 このコロンや\\を一発で除去したいのが目的なので… >>450 ^が行頭は知ってます。 ^ $ . + * ? [ ][^ ] ( ) | \\ \d \s \r \n \t $1 $2 単純な構造なら、↑ここらへんは書けますが、複雑になったり 回数指定や16進とかになると解説読んでなんとか…というレベルです。 2週なら[行頭の \\ 削除]、[行頭から最初の \ : まで取得]で簡単な話なんですが
452 名前:451 mailto:sage [2012/12/08(土) 20:14:29.95 ] レス直後に自己解決しました。 $1一発で取るんじゃ無くて、>449さんに $2$3 で取得すれば行けますね。 ありがとうございました。
453 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 20:16:56.13 ] 別パターン ^(\\\\)?([^\\:]+) \2
454 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 20:17:26.73 ] 解決したみたいだけどサクラエディタで質問する時は本体バージョンと、 使ってる正規表現DLLとそのバージョンを書くべき
455 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 20:27:53.85 ] 自分だったら\や\\を\tに変換して、エクセルで作業しちゃう。
456 名前: 忍法帖【Lv=2,xxxP】(1+0:5) mailto:sage [2012/12/15(土) 23:17:38.36 ] ${2}1
457 名前:デフォルトの名無しさん mailto:sage [2012/12/20(木) 20:36:10.03 ] 同じ文字列が繰り返されるような文字列にマッチさせるようにするにはどのように記述したら良いでしょうか? ex) apple_and_orange/1687646/abcde/abcde/hogehoge apple_and_orange/5646818/fghijk/fghijk/hogehoge apple_and_orange/1984687/lmnop/lmnop/hogehoge /abcde/abcde/や/fghijk/fghijk/のように同じ文字列が繰り返されます これが良い例えかどうかは分かりませんが、参照で説明したら apple_and_orange/\d+/$1/$1/hogehoge といった感じです
458 名前:デフォルトの名無しさん mailto:sage [2012/12/20(木) 21:00:31.33 ] /([^/]+)/\1
459 名前:デフォルトの名無しさん mailto:sage [2012/12/20(木) 21:08:48.05 ] >>458 ありがとうございます
460 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 20:52:32.91 ] Javaで正規表現を使ってHTMLの終了タグを順番に一つずつ抽出しようと思ったのですが失敗しました。 \\[/.*\\] Hello regex world! [a href="foo.html"]This is link text.[/a] [strong][em]woohooo![/em][/strong] ⇒[/a] [strong][em]woohooo![/em][/strong] いろいろ調べて最短修飾子を使えばいいのかなと思いましたがこれも失敗しました。
461 名前:460 mailto:sage [2013/01/03(木) 20:54:16.82 ] すいません途中で間違えて描いてしまいました。 最短一致で次のように試して失敗しました。 \\[/.*\\]+? Hello regex world! [a href="foo.html"]This is link text.[/a] [strong][em]woohooo![/em][/strong] ⇒[/a] [strong][em]woohooo![/em][/strong] 結果は変わりませんでした。 何が間違っているのでしょうか?
462 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:08:53.67 ] \[/[^\]]+\] エスケープの仕方が間違ってる
463 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:17:19.18 ] 回答してから気がついたんだけど、コレほんとにHTMLなの? JAVAでは<>が[]で表現されるとか?
464 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:18:30.69 ] >>462 回答ありがとうございます! Javaだと角かっこをエスケープする\をエスケープするために\\[とか\\]としないとエラーになるようで、 \\[/[^\\]]+\\] としたら無事一つずつ抽出できました! [^]で角かっこに含まれない一文字にマッチという意味のようなのでこれは /と]以外にマッチするということですか?
465 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:19:32.75 ] >>463 すいませんHTMLじゃなくてHTMLのtextareaの中に含める独自タグでした……括弧が違うだけで原理は一緒です。
466 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:24:37.24 ] エスケープしてるほうの[]は単なる文字で 素の[]は文字クラス なので\\[/[^\\]]+\\] は []に囲まれた]以外の1文字以上の任意の文字列にマッチ
467 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:27:04.49 ] あ、/忘れた []に囲まれた先頭が/の]以外の1文字以上の任意の文字列にマッチ 文章にすると逆に分かりづらいな 日本語のうまい他の人に期待
468 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:36:41.12 ] エスケープ文字が邪魔でわかりにくかったので<>で見てみました。 </[^>]> こうなりますよね…… </と>に囲まれた>以外の1文字以上の任意の文字列にマッチ Hello regex world! <a href="foo.html">This is link text.</a> <strong><em>woohooo!</em></strong> で </ と > に囲まれた a> <strong><em>woohooo!</em></strong> とはならない理由がいまいちつかめてないです……たぶん[^>]の意味がちゃんと理解できてないんだと思います。 詳しい解説感謝です!
469 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:39:05.91 ] 間違えました、 </ と > に囲まれた a> <strong><em>woohooo!</em></strong です。
470 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:42:43.41 ] あ、aタグの後ろの>で引っかかってaまでが[^>]の部分とみなされたってことですかね? そして後ろに囲む>がくっついたと。 なんとなくわかったかもです!
471 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:47:55.58 ] 解説書いてたら自己解決してたでござる。 それであってるよ。 あと、念のため </[^>]> じゃなくて </[^>]+> ね。
472 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:55:38.52 ] あっ、+が無いと<と>の間に何もない時マッチしないですね 丁寧にほんと感謝です!
473 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 04:32:05.31 ] そういうときは事前に【 】などに変換しておくと、ややこしくならなくて良いよ。
474 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 22:19:43.90 ] >>473 遅くなりましたがアドバイスありがとうございます!
475 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 23:51:26.93 ] 後方参照で$1の後に特定の数字を続けたいんだけど、どう書けばいいんだろう $12とか書くと、当然12番目のグループと解釈されて駄目
476 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 23:57:52.97 ] ${1}2
477 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 23:59:46.88 ] ああごめん ググッたら一番上に出てきたわ 本当めんご
478 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 07:30:32.86 ] へぇ。知らなんだ。 ずっと"$1\x32"みたいなメンドくさいことしてたわ。 横からおいしくいただきましたw プログラミング言語関連の調べ物って、ググるにしても キーワードが"$"とか"#"みたいな記号だったりして難しいよね。
479 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 08:13:02.35 ] 後ろからもおいしく頂きます。
480 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 00:10:04.48 ] boost regexでの話なのですが、後読みが使えないのですが何とかして先読みで代用できないものでしょうか? 先読み後読みの仕組みもそこそこにしか理解してないものの、無理そうな気配は感じております が、この道の先人であるところの皆様なら何かすごい裏技をご存知なのではと一縷の望みを託しに参上いたしました
481 名前:デフォルトの名無しさん [2013/01/07(月) 00:37:46.83 ] 後読みって戻り読みの別称でいいんだっけ?
482 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 00:43:41.18 ] はい。英語ではlook-behindと書かれる↓です (?<=),(?<!)
483 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 00:43:55.04 ] >>480 可変長戻り読みの正規表現を使おうとしてるんじゃないの? ttp://jp.emeditor.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=239&forum=3 もうちょっと具体的にマッチさせたい対象データと boostの制限で通らなかった正規表現パターンを書いてもらわないと アドバイスしづらい
484 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 00:52:54.44 ] >>483 それです 可変長というのがよく分かりませんが 具体的には、 (?<!やす|ひろし|てつや)さん で検索すると のりこさん、ちぐささん、ひろしさん、てつやさん の内 のりこさん と ちぐささん のさんがマッチしますが、(?<=),(?<!)が仕様上無いとのこと どうにかなりませんでしょうか……?
485 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 03:44:19.04 ] > (?<=),(?<!)が仕様上無いとのこと ある (?<!やす|(?<=ひ)ろし|(?<=て)つや)さん でいける よく調べようね
486 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 17:20:32.87 ] >>485 ありがとうございます それがいわゆる可変長と言うやつでしょうか やす、ひろ、てつなら問題なかったと
487 名前:デフォルトの名無しさん [2013/01/08(火) 21:09:21.66 ] 行頭と行末にリストタグを追加したいのですが、うまくいきません。。。 秀丸使っています。。どのように書けばいいのでしょうか?? あああ いいい ううう ↓望む結果 <li>あああ</li> <li>いいい</li> <li>ううう</li>
488 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 21:37:20.10 ] (.*) <li>\1</li>
489 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 21:49:48.37 ] もし空行があった場合<li></li>だけの行になってしまうと多分まずいので *より+のほうがいいと思う
490 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 22:01:39.99 ] ^(.*\S.*)$ スペースだけの行もカット。\Sは詳説・正規表現でよく出てくる。
491 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 22:05:41.50 ] つまりだな 質問者はテンプレ使えって事だ
492 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 22:14:53.93 ] テンプレの要項は満たしてるけど説明欄が不十分
493 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 16:51:43.53 ] ^(\s*)(.+)$ \1<li>\2</li> インデント殺さないでほしいってなったときに。
494 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 20:47:05.50 ] >> 488-493 質問者です。どうもありがとうござました。遅くなりました。 これでできました。 (.+) <li>\1</li> ^(.*\S.*)$ <li>\1</li> スペースの違いがあまりわからず、、いろいろと深いですね><
495 名前:デフォルトの名無しさん mailto:sage [2013/01/18(金) 11:20:51.12 ] PHPにて、2chで見るようなレスアンカーを検知して その内容を区分けするようなプログラムを組んでいます。 例えば$testというstring型の中から 特定のアンカーがついた文章ごとに 配列に格納するようにstrposを使い for($i = 0; $i <= 1001; $i++){ $res = '>>'.$i.''; if(strpos($test, $res) !== false)){ //配列に入れる諸々処理 }} という風に、簡略化はしてますがこんなのを書いたところ 動いてはくれるのですが、>>1 とついた文章と>>15 とついた文章が区別できてません。 >>1 がついた文章用の配列の中に >>15 がついたのまで入っちゃいます。 その逆もです。 うまくそれらを区別するにはどんな正規表現を使えばいいのか、どなたかご教授願います。。
496 名前:デフォルトの名無しさん [2013/01/18(金) 12:09:05.36 ] 皇潤 数字以外を検出
497 名前:495 mailto:sage [2013/01/18(金) 13:22:49.52 ] >>496 レスありがとうございます。 確かに>>数字、の後には何かしら数字以外がくるので桁数を指定できますねなるほど…。 しかし、preg_matchで'/>>'.$i.'\D/'を条件にしてみましたがうまくいきません。 書き方が悪いのでしょうか? 降順もググッたりしましたがもう少しヒントを… forをデクリメントで回したりしても結果変わらず…です…。
498 名前:デフォルトの名無しさん [2013/01/18(金) 13:33:13.42 ] 自分の投稿内容よく読めよ
499 名前:495 mailto:sage [2013/01/18(金) 14:02:53.49 ] >>498 正規表現と全然関係ないとこでミスってました。 '/>>'.$i.'\D/'こいつでいけてたんですが preg_matchは !== false じゃなく === 1 で条件つけるべきだったんですね。 ありがとございましたー。
500 名前:デフォルトの名無しさん mailto:sage [2013/01/18(金) 23:39:45.21 ] アフィかな、がんばれ。
501 名前:デフォルトの名無しさん mailto:sage [2013/01/19(土) 01:52:56.64 ] ちなみに、 \D を (?!\d) にするのが模範解答な。\Dの場合、数字以外の文字が必ず必要だが、(?!\d)の場合、 後ろに文字が存在しない場合でもマッチする。まぁ実用的には変わらないかもだが。
502 名前:デフォルトの名無しさん mailto:sage [2013/01/19(土) 11:10:26.52 ] 笑いを取るための模範解答ってこと?
503 名前:デフォルトの名無しさん mailto:sage [2013/01/19(土) 17:19:26.64 ] >>501 その部分については安価のみを除外したい意図があるのかもしれないし。 数字をキャプチャするのが模範解答()には必要だと思うよ
504 名前:デフォルトの名無しさん mailto:sage [2013/01/20(日) 01:15:05.18 ] アンカのみを除外とか・・数字のキャプチャとか・・何言ってんだこいつは。 プログラミング出来ない馬鹿は黙ってろ。
505 名前:デフォルトの名無しさん mailto:sage [2013/01/21(月) 01:22:11.29 ] >>504
506 名前:デフォルトの名無しさん mailto:sage [2013/01/21(月) 12:23:08.55 ] キャプチャはいらないよね。それより全角
507 名前:503 mailto:sage [2013/01/21(月) 13:41:04.68 ] >>504 for($i = 0; $i <= 1001; $i++){ $res = '>>'.$i.''; プログラミングできる頭いい人ならこの時点でクソプログラムだってつっこめよ。
508 名前:デフォルトの名無しさん mailto:sage [2013/01/21(月) 16:31:34.57 ] 人のミスを探す前に自分のミスを認めて謝罪して土下座するのが先じゃないの? それが出来ないなら明日から来なくていいよ?
509 名前:デフォルトの名無しさん mailto:sage [2013/01/21(月) 16:52:05.30 ] あ、、アンカのみ除外ってそういうことか。 計算量を考えたら数字のキャプチャも必要か。。 プログラミングできない馬鹿はこちらでした。すみませんでした。
510 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 01:07:37.81 ] ●正規表現の使用環境 秀丸エディタver8.11マクロ(正規表現:HMJRE.DLL V3.41) ●検索か置換か? 置換 ●説明 ”(ダブルクォーテーション)で囲まれた文字列の中のある文字を置換したい。 ●対象データ BASICテキスト 10 A$="AR_2_ZBG":B$="_GDA_" 20 C=D_2 30 G$="_":E=F_2:IF G$>"_" THEN 100
511 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 01:10:15.54 ] >>510 の続き 例えば上記のようなBASICテキストにおいて、行番号10,30の""の中にある_を-に変換したい。 但し、行番号20のC=D_2と30のE=F_2の_は変換しない。 なお上記のBASICテキストの””内は_の他に任意の半角文字とします。 ●希望する結果 10 A$="AR-2-ZBG":B$="-GDA-" 20 C=D_2 30 G$="-":E=F_2:IF G$>"-" THEN 100
512 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 02:16:32.06 ] homepage3.nifty.com/k-takata/mysoft/bregonig.html このdllが使えれば可能。 使えなければその処理をするためのプログラム作るか、手動で。
513 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 02:54:25.90 ] >>510 正規表現だけでやろうとするな 秀丸なら追加の条件を使うのが定石
514 名前:512 mailto:sage [2013/01/22(火) 04:20:59.49 ] >>512 のdllはダメだった、異常終了する。互換性ない。>>513 が最善と思われ。
515 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 06:43:25.79 ] >>514 これなら互換性あるよ ttp://homepage3.nifty.com/_htom/macro/macro_dll.html#label-23
516 名前:510 mailto:sage [2013/01/22(火) 13:07:41.94 ] >>512 、>>513 、>>514 、>>515 皆様、ご回答有難うございます。 別のDLLを使う事や追加の条件を使う事を考えます。 昨日連続で書き込み出来なかったのですが、 replaceall "([<|>|=]\"[^\"]*)_([^\"]*\")" , "\\1\-\\2" , regular; このようなマクロを考えて悩んで相談しました。 有難うございます。
517 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 06:35:15.85 ] [<|>|=] ←これだと 「|」 も検索されちゃうよ、[<>=] ね。
518 名前:510 mailto:sage [2013/01/23(水) 12:52:35.13 ] >>517 有難うございます。ご指摘の通り「|」も検索されていました。 頭をもう一度整理します。
519 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 15:29:07.46 ] 文字列に複数回数字が出現する時に 最後の数字だけ判定するには正規表現はどう書けばいいでしょうか? 具体的には "foo 111 333 bar 222-hoge" では"222"にマッチして "aaa 22" とある場合には 22 にマッチさせたいです。 環境はrubyです。
520 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 16:02:28.10 ] >>519 \d+(?!.*\d) 先読み慣れてないけど、こんな感じかな。
521 名前:デフォルトの名無しさん [2013/01/23(水) 16:03:41.71 ] [\d]+[^\d]*$
522 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 18:21:29.78 ] >>520 動きませんでした…。 >>521 ありがとうございます。 希望の動作ができました!
523 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 20:07:29.60 ] >>522 www.rubular.com/r/Rg66E8ONpE なんか環境が違うのかな、ともあれ>>521 で動いたなら良かった
524 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 21:21:04.59 ] 環境っつーか間違ってるから動かないんだろ
525 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 22:16:41.32 ] 繰り返しの後ろに先読み否定を置くと落とし穴になることある。 (?>X+)(?!Y) みたいに前の繰り返しを強制的に最長消費させれば落とし穴を埋められる。
526 名前:デフォルトの名無しさん mailto:sage [2013/01/24(木) 23:15:48.24 ] test(100) という文字列があって、(100)にマッチさせたいのですが、 \(.*\) ←この正規表現ではマッチしませんでした wikiを呼んだら >>"\(" や "\)" で囲まれた表現に続く "*" は無効とされる。しかし、一部の環境ではそうならない。 と書いてありました。 それでは(100)にマッチするパターンはどう記述するのでしょうか?
527 名前:デフォルトの名無しさん mailto:sage [2013/01/24(木) 23:29:31.94 ] まず環境が分からない
528 名前:デフォルトの名無しさん mailto:sage [2013/01/24(木) 23:34:29.13 ] >>527 QtというC++のライブラリです Qtのスレもあるんでそっちで聞いたほうがいいですかね?
529 名前:デフォルトの名無しさん mailto:sage [2013/01/25(金) 06:47:51.71 ] マルチ
530 名前:デフォルトの名無しさん mailto:sage [2013/01/25(金) 07:45:56.09 ] >>529 もう解決してるね。(>>526 ) 【RAD統合環境】 Qt 総合スレ 14 【Win/Mac/Linux】 toro.2ch.net/test/read.cgi/tech/1344830647/596-598
531 名前:デフォルトの名無しさん mailto:sage [2013/01/25(金) 14:46:31.09 ] >>516 まだいる?いるなら>>515 のライブラリで動くの作るよ?
532 名前:デフォルトの名無しさん mailto:sage [2013/01/26(土) 13:03:18.05 ] 正規表現を身につけようと思ってググったら 正規表現練習ツールってのを見つけたんですけど どうなんですか?
533 名前:デフォルトの名無しさん mailto:sage [2013/01/26(土) 13:18:17.27 ] 練習用
534 名前:516 mailto:sage [2013/01/26(土) 20:22:42.91 ] >>531 いますよー。もし可能でしたらお願い致します。<(_ _)> 結局、正規表現だけでは難しかったので、 取りあえずマクロと組み合わせて動かしています。
535 名前:デフォルトの名無しさん mailto:sage [2013/01/26(土) 21:40:31.13 ] >>534 鬼車dllで動くものはもう出来てるんだけど、秀丸用のdllって独自の改変が入ってるらしくて期待した通りに動かない・・ www42.tok2.com/home/proxo/rep/ 違いを探して直すまでもう少しかかるから1日ほど待って。
536 名前:516 mailto:sage [2013/01/26(土) 22:51:09.97 ] >>535 お時間を取らせてしまい申し訳ないです。了解致しました。 正規表現_part10_res510も拝見しました。 私はマクロで、正規表現で『[<>=]"文字"の中の最初の「_」】 をマッチさせた上で、 その後は1文字ずつ「_」があるか「"」が出るまで調べ、 「_」があれば都度、「_」を削除、「-」を挿入する処理を繰り返してます。
537 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 04:46:22.44 ] >>536 おまたせです。書き込むときに長すぎると怒られたので【検索欄】を2行に分割してます。(一行に繋げて使って下さい) 【検索欄】 (?<C1>(?>(?:[^"\\_]|\\\p{ASCII})*)){0}(?<C2>(?:\g<C1>|_)*){0}(?:^(?<CAP1>(?:\g<C2>"\g<C1>")*\g<C2>"\g<C1>)_ |\G(?<=.)(?<CAP2>\g<C1>(?:"(?:\g<C2>"\g<C1>")*\g<C2>"\g<C1>)?)_) 【置換欄】 \3\4- これの動作は -------------------------------- カッコ外"カッコ内"カッコ外"カッコ内" -------------------------------- というように、"が出現するごとにカッコの外か内かを判定してます。 よって、"の数が合わない場合、誤作動します。 ----------- 〜"〜"〜"〜 ----------- ↑最後の〜がカッコ内と判定される。 また、\"のエスケープに対応しています ------------ 〜"〜\"〜"〜 ------------ ↑正常に動く。
538 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 05:00:40.98 ] この動作で問題がある場合は言って下さい。 [<>=]を判定に付けたり、"の数が合わないときは最初から置換をしない、といったことが可能です。 ↓この正規表現のソースみたいなもの。 www42.tok2.com/home/proxo/rep/index.html 秀丸用ライブラリ(hmonig.dll)のメモ的なものも書いておきました。 興味のある方はどうぞ。(無理に読まなくていいです) 今回作成に使った正規表現エディタ。↑のファイルを読み込んで編集出来ます。 ttp://1st.geocities.jp/neeetest/RepStrTool_2.8.zip
539 名前:516 mailto:sage [2013/01/28(月) 04:47:14.90 ] >>537 すごい、完璧に動作しました!有り難く使用させて頂きます。 記載頂いた表現の中身をまだ理解しきれていないので勉強します。 今回は誠に有難うございました。また返答が遅くなり 申し訳ございませんでした。
540 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 09:48:29.09 ] >>539 丁寧にどうもです。後から手を加えやすい作り方をしたので何か要望があればお気軽にー。
541 名前:デフォルトの名無しさん mailto:sage [2013/01/30(水) 11:50:25.72 ] マクロでやれば簡単なのに
542 名前:デフォルトの名無しさん mailto:sage [2013/01/31(木) 22:50:54.28 ] ●正規表現の使用環境 sakuraテキストエディタ (bregonig.dll ver3.02 with Onigma 5.13.2) ●検索か置換か? 置換 ●説明 入れ子のデータを分離したい。 ●対象データ (あいう[えお]) これをキャプチャして、(あいう)[えお]と分離したいです。 よろしくお願いします。
543 名前:デフォルトの名無しさん mailto:sage [2013/02/01(金) 05:15:18.17 ] (?:\(([^\(\)\{\}]*)\[([^\(\)\{\}]*)\]\)) ($1)[$2]
544 名前:>>543 mailto:sage [2013/02/01(金) 15:54:50.12 ] ありがとうございます。 試してみます。
545 名前:デフォルトの名無しさん [2013/02/03(日) 06:34:15.67 ] 正規表現の定義は スレッドプロセスに聞いてくれ