1 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 15:16:48 ] 正規表現(Regular Expression)スレです。 質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。 【 前スレ 】 正規表現 Part6 pc12.2ch.net/test/read.cgi/tech/1241537764/
126 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 16:18:20 ] >>125 あんた馬鹿? いつまでスレ違いの話を続けるのよ。
127 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 18:58:09 ] >>126 あんた馬鹿? ネタに釣られるなんて
128 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 06:24:26 ] キモッ
129 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 11:30:52 ] >>124-127 これをあぼーんするNGEXは ^(あんた)*(馬鹿|バカ)?.+(ええやん)*
130 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 21:36:05 ] s/(\/\w\w)(\.htm)/$10$2/で、$1の直後に0を付けたいのですがどうも$10と解釈しているようで うまくいきません。これの回避方法を教えてください。
131 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 21:40:02 ] >>130 あ〜出来ました。いちど別の文字にしてから0に変えました。
132 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 22:03:22 ] >>129 それ試してみたんだけど、必ずマッチが成功してしまうのだ。 これじゃあぼーんできないよ。。
133 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 22:30:16 ] >>132 ^[\s ]*<a\shref=.+>>\d.+<br>[\s ](あ[んな]た|おいら)*(馬鹿|バカ)[??]?.+(ええやん)*
134 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 19:49:05 ] 現在地球上で最も優れた正規表現の実装はどこにありますか?
135 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 19:50:39 ] 自前で実装すれば、boostもperlも遅いからな・・・
136 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 20:15:59 ] 鬼車
137 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 18:12:57 ] >>130 普通に${1}0ってしろよ。
138 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 16:47:51 ] 正規表現クックブックが出たな
139 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 17:52:46 ] >>137 thx
140 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 18:00:01 ] なんでこんなにややこしいことになってるの? もうすこし表現が簡単になればいいのに 便利に使うための記述じゃないの?
141 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 18:37:07 ] ではあなたの考える分かりやすくて便利な性器表現をここで披露してみてくださいな
142 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 18:40:37 ] >>141 凹凸 これでいいか
143 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 18:41:11 ] ↑ 正規表現で選民意識かよきめえw
144 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 18:47:42 ] ♀ ♂
145 名前:デフォルトの名無しさん [2010/04/26(月) 19:41:28 ] >>138 ふくろう本あればもう他はいらなくね? 時々>>140 みたいな香具師が開発チームにいて 「正規表現は可読性が落ちるから使うな」とか抜かすが、 そこは「お前の知識が浅いだけじゃん」とCoolに決めて黙らす 相手は団塊爺PGだったりするんだが昔は正規表現嫌われてたのかね
146 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 19:58:40 ] イット業界 こわいお(;_;)
147 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:00:30 ] 当たり前のように使うようになったのは、Unixの文化だねぇ。 Unixへの憧れなしでパソコンユーザーだったおっさんとか、 メインフレーム屋やオフコン屋は拒否反応を示すのかも。
148 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:26:07 ] ↑ 偉い偉い その優秀な頭脳でい仕事してくださいね!
149 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:36:37 ] 誰に対しての反応なのかわからないよ。 時間的にもおかしくない?
150 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:41:27 ] ↑ 偉い偉い その優秀な頭脳でいっぱい仕事してくださいね!
151 名前:145 [2010/04/26(月) 21:08:58 ] >>147 なるほどねー パンチカード世代のUNIX系知らない団塊は毛嫌いするって事か まぁ今更勉強しろとは言わないけど最低限読めるように頑張れよ>>150
152 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 23:51:58 ] ↑ 偉い偉い その優秀な頭脳でいっぱい仕事してくださいね!
153 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 23:53:57 ] 2・3日前くらいからいろんなスレでキチガイを見かけるが同一人物か?
154 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:46:11 ] 今時、正規表現のロジックが理解できない奴は新しいコードなんて書けない 既存の古いコードのメンテでもやってればいい
155 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:48:52 ] ↑ 偉い偉い その優秀な頭脳で新しいコードいっぱい書いてくださいね!
156 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 01:37:23 ] 否定先読みなんかはどうも感覚と一致しなくてバグが潜んでたりするなぁ
157 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 01:44:59 ] ↑ 偉い偉い その優秀な頭脳でバグのないコードいっぱい書いてくださいね!
158 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 01:45:25 ] 最近いろんなブラウザでJavaScriptのエンジン開発やってるけど 正規表現の後読みが使えるブラウザって存在するの? どっかのブラウザが対応したらその流れでIE9でも対応しないかなと期待してるんだけど。
159 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 02:07:53 ] 正規表現エンジンは、どのブラウザも全く同じ。 基本的に、コアの実装はIEでさえ標準に準拠してる。 ブラウザ間の差があるのは、「クライアントサイドJavaScript」の部分。
160 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 02:22:28 ] ↑ 偉い偉い その優秀な頭脳で後読みが使えるブラウザを書いてくださいね!
161 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 13:18:15 ] '20100427' を (\d\d\d\d)(\d\d)(\d\d) でマッチさせると2番目は '04' となります。 このようなときに、先頭の0を取り除いて4を切り出すということは正規表現だけで実現できるでしょうか?
162 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 13:34:06 ] (\d\d\d\d)0(\d)(\d\d)
163 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 13:42:13 ] すみません、もちろん仮定は「同時に '20101203' が 2010, 12, 3 と切り出せること」です。
164 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 13:47:59 ] (\d\d\d\d)0?(\d?\d)0?(\d?\d) だと、 20100403 の時に変なことになるし、 たぶんできない。
165 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 13:55:32 ] (\d\d\d\d)(?:0|([1-9]))(\d)(?:0|([1-9]))(\d) と1桁ずつキャプチャしてつなげるとか?
166 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 16:54:53 ] ↑ 偉いなあお前らは 俺はワイルドカードも使えないがせいぜい頑張ってな
167 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 17:03:00 ] 単一のキャプチャの(...)でこの2つの場合を区別するのは ムリだろ。入り口が有限状態オートマトンの1状態にしか 対応させられないから1桁とるべき場合か2桁取るべき場合 かの情報の持ちようがない。
168 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 19:32:05 ] >>161 (\d{4})0?([1-9]?\d?(?=\d{2}))0?([1-9]?\d?)
169 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 19:33:09 ] すまん間違えた (\d{4})0?([1-9]?\d?(?=\d{2}))0?([1-9]?\d?)
170 名前:168=169 mailto:sage [2010/04/27(火) 19:34:30 ] 二重に間違えてるし…吊ってくるorzorz ^(\d{4})0?([1-9]?\d?(?=\d{2}))0?([1-9]?\d?)$
171 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 19:53:14 ] あー、^はいらないか 後ろが行末じゃない場合にも対応するならこうかな (\d{4})0?([1-9]?\d?(?=\d{2}))0?([1-9]?\d?)(?!\d)
172 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 20:17:03 ] 正規表現一本でなんでもかんでもやろうとするのって PerlやRubyで一行野郎と変わらない阿呆だな
173 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 21:01:58 ] ↑ 偉いなあお前は 優れたツール使って頑張ってな
174 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 21:33:41 ] レベル低いな
175 名前:デフォルトの名無しさん [2010/04/27(火) 22:34:36 ] >>172 正規表現一本も読めない奴が、このスレで何してんの?
176 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 23:27:25 ] ↑ 優秀なんだな君は 俺はワイルドカードも使えないが正規表現で頑張ってね
177 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 23:45:23 ] ↑ a = b a^2 = ab a^2 - b^2 = ab - b^2 (a + b)(a - b) = b(a - b) a + b = b 2b = b 2 = 1
178 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:32:33 ] >>177 なつかしすw
179 名前:デフォルトの名無しさん [2010/04/28(水) 07:42:31 ] (a + b)(a - b) = b(a - b) a + b = b 0でわるな
180 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 08:49:34 ] >>177 a=42 b=-22のとき
181 名前:デフォルトの名無しさん [2010/04/28(水) 12:26:37 ] JavaScriptです 「xxxx=任意&yyyyyyy=任意&zzzzzz=任意」 と言う文字列から任意の値を各々取るにはどうしたらいいでしょうか? xyzの文字は各々固定で、任意には何文字入るかわかりません 0文字もあります 欲しい結果は3つ xxxx=任意 yyyyyyy=任意 zzzzzz=任意
182 名前:181 mailto:sage [2010/04/28(水) 13:42:54 ] 自己解決 sage忘れすまん
183 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 15:30:15 ] 教わっといて自己解決かよw
184 名前:181 mailto:sage [2010/04/28(水) 15:46:38 ] >>183 いや、JavaScriptスレでもマルチしたけど 結局、正規表現ではダメだったのよ まぁ…すいませんでしたw 勉強します
185 名前:デフォルトの名無しさん [2010/04/28(水) 21:22:49 ] ●正規表現の使用環境 Perl5 ●検索か置換か? 置換 ●説明 行の最後が > じゃない行(改行コードだけの行も含む)の 改行コード を 改行コード<br>にしたい 改行コードは \n \r \r\n どれでもできるようにしたい ●対象データ <p>あいうえお</p> かきくけこ <p>たちつてと</p> ●希望する結果 <p>あいうえお</p> かきくけこ<br> <p>たちつてと</p>
186 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 23:59:29 ] 頑張ってみたけど、先読みを使うと、\r\nの時に都合が悪くて、 解決方法がわからんかったので置き換えでごり押し。 s/([^>])(\r\n|[\n\r])/$1<br>$2/sg; 改行コードを統一すると、先読みでもう少しスタイリッシュにかけた。 s/(?<!>)(?=\n)/<br>/sg; 何に使うかしらないけど、出力先のOSをみて改行コードを置き換えてもいいと思うんだけど。 サンプルは以下。 my @str = ( "<p>aiueo</p>\nkakikukeko\n<p>sasisuseso</p>\n", "<p>aiueo</p>\rkakikukeko\r<p>sasisuseso</p>\r", "<p>aiueo</p>\r\nkakikukeko\r\n<p>sasisuseso</p>\r\n", ); foreach(@str){ s/([^>])(\r\n|[\n\r])/$1<br>$2/sg; s/\r\n?/\n/g; # 表示確認のため、改行コードを\nで統一 print; print "-------------\n"; }
187 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 02:04:27 ] >>186 ありがとうございます。 これをよく見て勉強します。
188 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 18:11:51 ] >>187 こういう解法もある s/(.)(\r\n|\n)/$1 eq '>' ? "$1$2" : "$1<br>$2"/sge; eオプションが使えると色々応用が効くよ
189 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:25:13 ] Perlならね。
190 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:26:32 ] ありがとうございます。 これをよく見て勉強します。 ↑ 頑張ってください
191 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 09:40:13 ] sge-
192 名前:デフォルトの名無しさん [2010/05/02(日) 09:58:16 ] 適当なフリーのテキストエディタで正規表現を使って以下のような置換を行おうとしたのですが 正規表現には素人なので2つめのパターンをどう表現すればいいのかよく分かりませんでした。 どう書けば上手く置換できるのか教えてください。 1つめのパターン [[XXXXX]] → {{abc|XXXXX|}} (XXXXXは任意の文字列) 2つめのパターン [[XXXXX|XXXXX 《YYY》]] → {{abc|XXXXX|def=YYY|}} (置換前の2つのXXXXXは同一の文字列) 例えば [[日本]] - [[アメリカ合衆国|アメリカ合衆国 《米国》]] - [[イギリス|イギリス 《英国》]] - [[ドイツ]] - [[フランス]] - [[中華人民共和国|中華人民共和国 《中国》]] - [[大韓民国|大韓民国 《韓国》]] - [[グアテマラ|グアテマラ 《グァテマラ/ガテマラ》]] - [[朝鮮民主主義人民共和国|朝鮮民主主義人民共和国 《北朝鮮》]] - [[メキシコ]] - [[ギリシャ|ギリシャ 《ギリシア》]] のようなテキストを、 {{abc|日本|}} - {{abc|アメリカ合衆国|def=米国|}} - {{abc|イギリス|def=英国|}} - {{abc|ドイツ|}} - {{abc|フランス|}} - {{abc|中華人民共和国|def=中国|}} - {{abc|大韓民国|def=中国|}} - {{abc|グアテマラ|def=グァテマラ/ガテマラ|}} - {{abc|朝鮮民主主義人民共和国|def=北朝鮮|}} - {{abc|メキシコ|}} - {{abc|ギリシャ|def=ギリシア|}} のように置換したいのです。
193 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 10:06:13 ] 正規表現 欲張り
194 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 13:36:16 ] {A},{B} という文字列に下記正規表現はマッチすると思うのですが \{(.+)\} *, * \{(.+)\} マッチしません。どこがまずいのですか?
195 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 13:44:04 ] \{(.+)\} *, *\{(.+)\}
196 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 13:46:07 ] >>195 ありがとうございます。 スペースが入っていましたねw 気づきませんでした。
197 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 23:31:14 ] (V)o¥o(V)
198 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 18:24:33 ] そりゃ工業高校なんかで最低限の技能をなにか一つ身に付けてる奴なら年齢が最強の武器になるよ 何となく大学院まで行ったような学生よりよっぽど将来有望だ でも3年間何もせずただ学校に通ってただけってんじゃ駄目だろ 何もしてないどころか勉強ばっかりやって3年間無駄に歳だけ喰って 社会じゃ役に立たない能書きだけ一人前になってたんじゃしょうがないだろ だから普通科の高卒は中卒以下だって言ってんだよ
199 名前:デフォルトの名無しさん [2010/05/05(水) 22:01:58 ] 前に、このすれで、()の中身を配列に入れていく正規表現があった。 (())でも、それぞれの中身を入れていく優れものだった。 あれの発展版で、文章(文章2(文章3)文章4)文章5(文章6(文章7)文章8)文章9 のそれぞれの文章を配列に入れれる正規表現はできないものだろうか?
200 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 22:25:37 ] 日本語でおk
201 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 22:34:50 ] >>199 その正規表現って ((o)(o))ってあってもちゃんと乳首取れる? ていうか言語クラス違うくね?できるもんなのか。
202 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 22:35:51 ] 近所が自転車盗まれたても、相当離れてるけどジュース置いたら逮捕w 姉はそれでおっぱい触られたって。 これひどくね?友達の姉の実話な。
203 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 22:48:00 ] 入れ子になってても順番にキャプチャできる 123456789 に対して 1(2(3)4)5(6(7)8)9 としたら キャプチャ結果は 234, 3, 678, 7 になる >>199 が何を求めてるのかいまいちよくわからんが
204 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 08:53:49 ] >文章(文章2(文章3)文章4)文章5(文章6(文章7)文章8)文章9 がデータだろうから 1(2(3)4)5(6(7)8)9 を与えたら 1, 2, 3, 4, 5, 6, 7, 8, 9 がほしいんだと思うぞ 一方ロシアでは split を使った
205 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 12:35:18 ] >ていうか言語クラス違うくね?できるもんなのか。 日本語でOK。
206 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 15:17:54 ] >>205 正規表現であって、文脈自由文法じゃないけどできるものなの? ってことだよ。俺の理解不足だったらすまないが。
207 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 15:47:52 ] >>204 たしかにネストなんか気にせずに'('と')'を区切り記号としてsplitするだけでいいな。 さすがロシア。
208 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 17:01:02 ] 確かに、わざわざ正規表現で処理する内容じゃないなw
209 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 17:22:49 ] さくらエディタを使っていて CHAPTER01=00:00:00.000 CHAPTER01NAME=第一部 オープニング CHAPTER02=00:09:13.400 CHAPTER02NAME=オラはにんきもの こういうのを TRACK 01 AUDIO TITLE "第一部 オープニング" INDEX 01 00:00:00 TRACK 02 AUDIO TITLE "オラはにんきもの" INDEX 01 09:13:40 こうしたいんですが、正規表現でできるもんなんでしょうか できるとしたら答えを貰えるのが一番ですが、どこら辺を調べればいいのかヒントをもらえないでしょうか
210 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 19:01:48 ] >>209 出来る サクラエディタの正規表現はperl互換だからperlの正規表現調べればいけると思う 一応、答えると CHAPTER(\d\d)\=(\d\d\:\d\d\:\d\d)\.\d\d\d\r\nCHAPTER\d\dNAME\=(.*?\r\n) を TRACK $1 AUDIO\r\nTITLE \"$3\"\r\nINDEX 01 $2\r\n で置換すればいいんじゃないかと思う。 (一番最後のINDEX 01ってのがINDEX 02の間違いなら、置換をINDEX 01からINDEX $1に変えてね) 多分
211 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 00:19:48 ] >>210 おお!出来ました。ありがとうございます。 正規表現はperlのが使えたんですね。これを機械に勉強してみます。
212 名前:デフォルトの名無しさん [2010/05/12(水) 03:15:50 ] php 5.2です。 あるテキストファイル内の文字列から、''や""で囲まれた場所以外の半角スペースとタブを削除したいんですが(preg_replace?)、 どんな感じにすればいいんでしょうか?
213 名前:デフォルトの名無しさん [2010/05/15(土) 19:34:41 ] 以下のような文章があって、NAME〜からENDまでの間の文字を正規表現で抽出するにはどうすればよいのでしょうか? NAME〜とENDは含みません。 NAME Haruhi Suzumiya Haruhi is the title character and leader of the SOS Brigade, whose energetic and eccentric character proves to be the driving force for the series. She has a mind for adventure, which often leads her subordinates to be swept into her plans. END
214 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 19:39:38 ] >>213 NAME[\s ]?(?.+)\nEND
215 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 07:33:29 ] いい加減な回答だなw
216 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 22:29:45 ] 正規表現で、"あ(い(う)え(おか)き)くけ" から一番外側の()の中身を取得するにはどうすればよいですか?
217 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 22:33:54 ] 言語による
218 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 22:38:27 ] \1
219 名前:デフォルトの名無しさん [2010/05/20(木) 22:14:10 ] ●正規表現の使用環境 Perl5 ●検索か置換か? 検索 ●説明 りんごにマッチする文字列を検索。 青りんごは対象外としたい。 ●対象データ 1,いちご、青りんご、みかん 2,いちご、青りんご、りんご 3,いちご、りんご、みかん ●希望する結果 2と3がマッチ お願いします
220 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 00:45:52 ] (?<!青)(りんご)
221 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 01:46:36 ] >>219 /\bりんご\b/
222 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 02:16:16 ] >>220 りんごの括弧はいらないだろ。 >>221 蜜りんごは?ねぇ、俺の大好きな蜜りんごは?
223 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 05:39:03 ] www.youtube.com/watch?v=h-mxZ-ijPs8 www.youtube.com/watch?v=yWZWWKOp9qU www.youtube.com/watch?v=657bBDalKQo www.youtube.com/watch?v=Fi_YvuAPdNg www.youtube.com/watch?v=zzNZz590adI www.youtube.com/watch?v=U3HqWCALUNs www.youtube.com/watch?v=gUZj2i6U-aw www.youtube.com/watch?v=iq9s9FJMk_c www.youtube.com/watch?v=qTemVhatInQ
224 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 07:53:34 ] >>220-221 ありがとうございます。
225 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 09:08:55 ] ★青葉りんご彡☆
226 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 19:33:34 ] Javaで鬼車使うには、ランタイムを再コンパイルするしかないの?
227 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 00:57:13 ] ●正規表現の使用環境 JavaScript2.0? ※Firefox3.5.9+Greasemonkey 0.8.20100408.6+WindowsXP Pro SP3 ●検索か置換か? 置換 ●説明 ( と ) ※括弧と括弧閉じを含む文字列を置換したい。 ●対象データ (Update:2010/01/02) ●希望する結果 (Update:2010/02/03) 続きを書きます。
228 名前:277 mailto:sage [2010/05/22(土) 01:00:01 ] 変数の wordsBrf.push(""); の "" の中に\マークを入れたりせずに、 文字列を置換させたいです。 //文字を置換 var wordsBef = new Array();//置換前 var wordsAft = new Array();//置換後 wordsBrf.push("(Update:2010/01/02)");//置換前 wordsAft.push("(Update:2010/02/03)");//置換後 var body = document.body.innerHTML; var i = 0; for (i = 0; i < (words.length); i++) { var w = new RegExp( words[i], "gi" ); var body = body.replace( w, words[i] ); } document.body.innerHTML = body;
229 名前:277 mailto:sage [2010/05/22(土) 01:06:01 ] 実際には、Webサイトにある更新日 (Update:2010/04/30) という 文字の色を変えるのに使いたいです。※更新”されていない”ものは赤で表示。 TCP Monitor Plus (OGA'sさんのサイト) hp.vector.co.jp/authors/VA032928/ //バージョン更新チェック var color = new Array(); var words = new Array(); color.push("#FF0000"); words.push("Ver2.42");//TCP Monitor Plus words.push("(Update:2010/04/30)"); var body = document.body.innerHTML; var i = 0; for (i = 0; i < (words.length); i++) { var w = new RegExp( words[i], "gi" ); var body = body.replace(w, "<font color='" + color[0] + "'>" + words[i] + "</font>"); } document.body.innerHTML = body; どうかよろしくお願いいたします。
230 名前:277 mailto:sage [2010/05/22(土) 01:07:27 ] 説明が下手ですみません。 変数の値に直接エスケープ文字を入れたくないという事です。 よろしくお願いします。
231 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 01:23:34 ] >>230 本文読んでないけど、メタ文字をエスケープ出来れば済むのならjavascript quotemetaでぐぐるんだ
232 名前:277 mailto:sage [2010/05/22(土) 01:36:41 ] >>231 (*・∀・)ノこんばんわ。 レスありがとうございます。 quotemetaはPerlでしか使えないのか〜(´・ω・`)と思っていたら、 メタ文字のエスケープ関数のサンプルが載っているサイトがありました。 //追加 function quote(str){ return str.replace(/\W/g, function($0){ return '\\' + $0; }); }; //変更 var w = new RegExp( quote(words[i]), "gi" ); これで出来ました! 夜遅くにどうもありがとうございました!
233 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 22:43:12 ] グローバルフラグを付けなくてもいいようなケースにもグローバルフラグを付けた場合 どれだけ無駄になりますか?とてつもなく無駄ですか?微々たるものですか?
234 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 22:52:06 ] 検索対象の文字列長による。 グローバルフラグをつけさえしなければ、 最初のマッチング位置以降の文字列は読み込まないので。 ただし、検索対象の文字列の中にマッチングする対象が無い場合は グローバルフラグをつけた場合と同じぐらいコストがかさむ。 もう作っちゃったなら、性能問題出てから考えたら。
235 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 22:55:32 ] >>234 どうもありがとうございます。特に何も感じなかったら気にしないことにします
236 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 02:17:39 ] ●正規表現の使用環境 C# 3.0 ●検索か置換か? 検索 ●説明 各行の1番目のAまでを検索したい { と } に囲まれた文字列を検索したい ●対象データ Memo[0]{ [Text] 対象データ } ●希望する結果 [Text] 対象データ よろしくお願いします
237 名前:デフォルトの名無しさん [2010/05/30(日) 10:50:00 ] >>216 亀レスだけど、 \(.*\) で最長一致検索すれば、一番外側の()である (い(う)え(おか)き) にマッチする ちなみに、\(.*?\)で最短一致検索すれば "(い(う)"と"(おか)"の2箇所にマッチする
238 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 00:04:43 ] 強欲マッチってどういう時使うの?
239 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 00:13:50 ] 例えば文中の全ての数字の並びを抽出したいときに /(\d+?)/g とかやると切ないことになる
240 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 00:29:59 ] じゃ手放さない(バックトラックしない)強欲マッチは?
241 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 00:43:24 ] パフォーマンスだろ。
242 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 01:31:28 ] よくわかりません。
243 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 08:06:13 ] 鬼車の欲張りと強欲の違いがわからない ttp://www.geocities.jp/kosako3/oniguruma/doc/RE.ja.txt
244 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 12:12:44 ] 手放さない欲張りマッチを使って失敗するような場合はあるんですか?
245 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 10:32:38 ] javascriptです aiueo aiue iueo にはマッチするけどiueにはマッチしないってどう書けばいいですか? /a?iueo?/ だとiueにもマッチしてしまって /a?iueo|aiueo?/ だと期待通りにはなるのですが 重複する記述があるのでまとめられるならまとめたいです 共通する部分がiueじゃなくてもっと複雑になった場合など
246 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 11:08:31 ] 245 自己レスです /a?(iue)o|a\1o?/ こうかな・・・
247 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 12:26:17 ] >>246 僕もそう思った。
248 名前:デフォルトの名無しさん [2010/06/06(日) 10:57:14 ] 質問です javascriptです。 IMG00123123.jpgというような文字列が配列に大量にある。 そんな中で、例えばIMG00000012.jpgを検出したい。 そのものずばりで検索すれば、何も問題はないのですが、 不精をして、12だけで、マッチさせたい場合、どう考えればよいでしょう?
249 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 11:13:15 ] JavaScriptってsprintfないんだな。意外だ ("00000000" + "12").substr("12".length);
250 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 12:06:30 ] Number("IMG00000012.jpg".match(/\d+/)[0]) == 12
251 名前:デフォルトの名無しさん [2010/06/06(日) 12:15:14 ] >>249 ありがとうございます。 後ろから検索する事と、 文字列の長さを利用して、 "00000000"と"12"を分割する、という考え方ですね。 ちょっと検証してみます。
252 名前:デフォルトの名無しさん [2010/06/06(日) 12:55:22 ] >>250 あ、ありがとうございます。 現在>>249 の考え方で検証中です。。 str:検索対象の文字列(ファイル名)例:IMG012312.jpg a:検索の為の入力された数値 例:12 c=str.lastIndexOf(a+".") if(c>-1) { d=str.slice(0,c); e=(d.match(/[1-9]/).length if(e>0) { alert("strは、00000012.jpgではない"); }else{ alert("strは、00000012.jpgだ"); } おおよそこんな処理になるでしょうか?
253 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 13:06:18 ] 正規表現もだけど、それ以外のところがボロボロだからjsスレ行ってこい
254 名前:デフォルトの名無しさん [2010/06/06(日) 14:13:08 ] >>253 エラーだらけですみません。デバッグしてませんでした。 str="IMG001012.jpg "; a=12; c=str.lastIndexOf(a+".jpg") ;//後方から"12.jpg"で検索 //引っかかれば、12.jpgの部分がある //なければ-1が帰ってくる if(c>-1) { //検索に引っかかった場合次は、 //文字列strの0番からc-1番までが、 //0以外の文字を含むか検証する必要がある d=str.slice(0,c); //strの0番からc-1番までを抜出し変数dに代入 //文字列dの中に1から9の任意の値がなければnullが帰ってくる //strは少なくとも12.jpgではないと言えるので if((d.match(/[1-9]/g))==null) { alert("12.jpgの候補だ"); }else{ alert("12.jpgではない"); } } こんな感じで絞り込めました。 後は、imgとかの違いや、0の数での違いをどう処理するかかなと 思いますが、、
255 名前:デフォルトの名無しさん [2010/06/06(日) 14:18:33 ] すみません。以下訂正します 誤//strは少なくとも12.jpgではないと言えるので 正//strは少なくとも複数の0と12.jpgからなる文字列だといえるので
256 名前:デフォルトの名無しさん [2010/06/06(日) 15:07:04 ] >>250 n=Number("IMG00000012.jpg".match(/\d+/)[0]); alert(n); で検証しました。確かに12ですね。 \d+:任意の数値の1回以上の表現 これで、00000012が配列として抽出される で、問題は[0]ですが、 これは、もしかして配列の0番ということですか? こんな使い方が出来るとは知りませんでした。 この手法だと、直接値を比較できますね。 ありがとうございました!!
257 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 15:50:34 ] リファレンス嫁 https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/String/match >正規表現が g フラグを含んでいない場合、regexp.exec(string) と同じ結果を返します。 https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/RegExp/exec >[0] 最後にマッチした文字 配列じゃなくてプロパティ 厳密には配列もプロパティの集まり つーかjsスレ(ry
258 名前:デフォルトの名無しさん [2010/06/06(日) 16:42:14 ] >>257 すみませんでした(平謝り) 上記リファレンス、頭から読み直します。 ありがとうございました。
259 名前:デフォルトの名無しさん [2010/06/11(金) 23:05:13 ] 質問させてください。 ●正規表現の使用環境 - Mery(エディタ、鬼車ライブラリ) ●説明 - 連続する同じ内容の2行にマッチ、3行以上の部分にはマッチさせない ●対象データ ABCD ABCD EFGH EFGH EFGH ●希望する結果 ABCDの2行のみマッチ、EFGHの2行のところ(2箇所)はスルーして欲しい。 --- 否定先読みと否定戻り読みを同時に使ってみたところ、 たぶん否定戻り読みの\1の参照が変なため上手くいきませんでした。こんな感じ。 (?<!\1)(^.+\n)\1\1(?!\1)
260 名前:259 [2010/06/11(金) 23:08:36 ] >>259 すみません。例では「\1」が1個多すぎました。 × (?<!\1)(^.+\n)\1\1(?!\1) ○ (?<!\1)(^.+\n)\1(?!\1) …どっちみちダメな例ですが、いちおう。。
261 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 04:20:30 ] 捕獲集合より前に参照使おうとしてるからダメ。 鬼車では>>259 の問題は解けないと思う。 こういう前方からの参照ができる正規表現エンジンってあるの?
262 名前:デフォルトの名無しさん [2010/06/12(土) 10:25:24 ] マッチ部分が必要な2行のみにしたいのなら難しい(というかできるか どうか俺もわからん)けど、そういう行を抽出したいだけなら前の1行も マッチさせてしまえばいいんじゃね? $str = <<__STR__; ABCD ABCD EFGH EFGH EFGH __STR__ $re = qr{ (?: ¥A | (^.+¥n) (?!¥1) ) ( (^.+¥n) ¥3 ) (?!¥3) }xsm; while ($str =~ /$re/g) { print "<<<¥n$2>>>¥n" }
263 名前:259 [2010/06/12(土) 13:32:11 ] >>262 どうもありがとう! それで上手くいきました。 が、便乗ですみませんが、よろしければもう1つ質問させてもらえますか。 >>262 の非捕獲式集合 "(?:)" を消そうと思うと上手くいきません。 "(?:)" を"()" に変え、 後方参照が1つ増えたので、"\3" を "\4" に変えると 同じものになるはずだと思うのですが。。 ○ (?:\A|(^.+\n)(?!\1))((^.+\n)\3)(?!\3) × (\A|(^.+\n)(?!\1))((^.+\n)\4)(?!\4)
264 名前:259 [2010/06/12(土) 13:43:31 ] >>263 cf. 無理矢理ほんの少しだけ見やすくしてみました。 ○ --- (?: \A|(^.+\n)(?!\1) ) ( (^.+\n)\3 ) (?!\3) × --- ( \A|(^.+\n)(?!\1) ) ( (^.+\n)\4 ) (?!\4)
265 名前:デフォルトの名無しさん mailto:sage [2010/06/12(土) 14:03:18 ] ( \A|(^.+\n)(?!\2) ) ( (^.+\n)\4 ) (?!\4)
266 名前:259 mailto:sage [2010/06/12(土) 14:50:02 ] >>265 !!!!!! !!!!!! …かなり長時間悩んでいたので、信じられないくらいすっきりした。 ありがとう。
267 名前:デフォルトの名無しさん mailto:sage [2010/06/13(日) 09:25:15 ] ((^.+¥n)¥2)(?<!^¥2¥2¥2)(?!¥2) というのを試してみたら可変長戻り読みでエラーになっちゃった。 これ戻り読みするときには¥2は確定してるんだからなんとかならん のかなぁ。
268 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 03:14:38 ] まぁまぁ初心者なんだが、 /aaa/ ・ /aaa bbb/ と2回やるのと、/aaa( bbb)[0,1]/ とまとめるのでは、 一般的に言ってどっちが速い・軽い・負担少ないの? 対象データとの兼ね合いもあるだろうが、どっちの方が好ましいの?
269 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 03:18:12 ] 後者じゃないの。 10万回くらい回すテストプログラム作ってみたらいいと思う。 あと、/aaa( bbb)[0,1]/じゃなくて/aaa( bbb){0,1}/ね。 もっと言うと/aaa( bbb)?/の方が簡潔。
270 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 03:19:36 ] 訂正 ×: /aaa( bbb)[0,1]/ ○: /aaa( bbb){0,1}/
271 名前:デフォルトの名無しさん mailto:sage [2010/06/17(木) 03:21:17 ] おっとすれ違った。ありがとう >/aaa( bbb)?/ なるほど!
272 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 15:08:05 ] perlスクリプト中に含まれる use utf8; use encoding "cp932"; use encoding 'euc-jp'; use encoding "iso-8859-2"; などの文にマッチして、「utf8」「cp932」「euc-jp」「iso-8859-2」の部分のみ取り出したいのですが 一発でできる方法があったら教えてください。
273 名前:デフォルトの名無しさん [2010/06/19(土) 15:11:49 ] 248です。先日はありがとうございました。 アルファベット+数値.jpgのパターンはうまく認識するコードができました。 ただ新たな問題も発生しました。以下のようなパターンです。 日本語の文字化けと、スペースがあるパターンでは、数値を正確に拾えませ んでした。 画像_000012.pg %E7%94%BB%E5%83%8F_000012.jpg 画像 000012.jpg %E7%94%BB%E5%83%8F%20000012.jpg 画像 000012.jpg %E7%94%BB%E5%83%8F%E3%80%80000012.jpg 文字化け部分を無視して、数字の部分だけを検出する方法を得たいのですが どうしたらよいでしょうか? 日本語とスペースの部分は(%..)*と、まとめられますが これを除いた数値部分\d+だけをマッチの対象としたい場合 以下の表現でよいでしょうか? (?:(%..)*)\d+
274 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 15:19:55 ] >>272 | を使えばまあ1つにはできるだろうけど
275 名前:デフォルトの名無しさん mailto:sage [2010/06/19(土) 21:03:30 ] >>272 ^use\s+(encoding\s+)(?(1)["']|)(.*?)\2;$ こうですか?分かりません><
276 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 05:14:30 ] ●正規表現の使用環境 秀丸 または AHK ●検索か置換か? 検索 / grep ●説明 テキストファイルを複数キーワードで検索したい (通常のウェブ検索のようなものを正規表現で行いたい) ●対象データ text1 [tag1][tag2] text2 [tag2][tag1] text3 [tag2] text4 [tag3][tag1] text5 [tag3] text5 [tag1][tag3][tag2] ●希望する結果 [tag1] および [tag2] で検索した場合、以下がヒット text1 [tag1][tag2] text2 [tag2][tag1] text5 [tag1][tag3][tag2]
277 名前:276 mailto:sage [2010/06/23(水) 05:15:20 ] どなたか >>276 についてアドバイスをいただけないでしょうか。 宜しくおねがいいたします。
278 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 09:06:03 ] \[tag(1|2)\]
279 名前:デフォルトの名無しさん mailto:sage [2010/06/23(水) 09:50:32 ] [tag1] と [tag2] 両方含む行を拾いたいんじゃまいか >>276 (?=.*\[tag1\])(?=.*\[tag2\]) ただ秀丸の正規表現が先読みに対応してないと動かない
280 名前:デフォルトの名無しさん mailto:sage [2010/06/25(金) 00:09:27 ] >>279 ありがとうございます。試してみたところ、秀丸では動きませんでした。 先読みには対応しているようなので、何か別の工夫がいるのかもしれません。 秀丸スレで質問してみます。
281 名前: ◆/91kCCQXBo mailto:sage [2010/06/25(金) 00:53:42 ] ((.*tag2.*)(.*tag1.*))|((.*tag1.*)(.*tag2.*))
282 名前:デフォルトの名無しさん mailto:sage [2010/06/25(金) 17:47:50 ] >>280 (?=.*\[tag1\])(?=.*\[tag2\]) でも ^(?=.*\[tag1\])(?=.*\[tag2\]) で動いたぞ。ただ、実際に0文字にマッチしているので、 範囲としては見えない。分かりやすいのがよければこれだな: ^(?=.*\[tag1\])(?=.*\[tag2\]).*
283 名前:デフォルトの名無しさん [2010/06/27(日) 22:26:13 ] ●正規表現の使用環境 VBScript ●検索か置換か? 置換 ●全角英数字を全て半角英数字にしたい 1文字1文字Case文でそれぞれを置換するしか方法ないですかね?
284 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 18:11:55 ] 正規表現じゃ無理。StrConvでググリなさい。
285 名前:デフォルトの名無しさん mailto:sage [2010/06/28(月) 18:17:06 ] ていうかマルチポストしてんならそう書きなさい。 あと死んでください。 Excel VBA 質問スレ Part15 pc12.2ch.net/test/read.cgi/tech/1271261239/692
286 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 19:29:23 ] ●正規表現の使用環境 Perl ●検索か置換か? 置換 ●説明 文章の全部のurlを下記のように”&”のあとを削除したい ●対象データ ttp:\\www.example.com\c?ro=1&act=rss&output=no ...... ●希望する結果 ttp:\\www.example.com\c?ro=1 ......
287 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 20:53:29 ] /&.*//
288 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 21:04:22 ] 一行にURLだけしか入ってなければそれでもいいのだが
289 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 12:21:22 ] 秀丸エディタとかでちょっと正規表現使った置換とかしたい時に \fで区切ってたんだけど、要素が10以上になるとうまく指定できない……
290 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 18:35:23 ] 自己解決
291 名前:デフォルトの名無しさん [2010/07/04(日) 23:25:25 ] ●正規表現の使用環境 JavaScript ●検索か置換か? 置換 ●説明 「サーバー」を「サーバ」に置換したい 「サーバーサイド」「サーバー設定」は除外したい ●対象データ つまりサーバーのあれこれ しかしサーバーサイドのなんたら なお、サーバー設定は云々 ●希望する結果 つまり、サーバのあれこれ しかしサーバーサイドのなんたら なお、サーバー設定は云々
292 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 23:59:32 ] サイドと設定以外のサーバーを全部サーバにするってことかな? .replace(/サーバー(?!(サイド|設定))/g,"サーバ")
293 名前:デフォルトの名無しさん [2010/07/05(月) 08:15:02 ] >>292 そうです。ありがとうございました! 梟で勉強します!
294 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 14:04:37 ] 梟より最近出た料理本の方があんたのような人間には良いんじゃないか。
295 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 15:59:11 ] ↑ こういう皮肉を言う人間にはなりたくないな。
296 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 16:37:34 ] どこが皮肉なんだろ? おれも >>291 にはクックブックの方がいいと思うけど。
297 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 18:12:56 ] >>1 は料理本が出る前のテンプレだよなあ。 このスレの質問は、初心者ばかりだから、梟じゃわけわからんことが多いだろう。
298 名前:293 [2010/07/05(月) 19:29:54 ] おっしゃる通り、初心者です 梟本は持ってるんですが、確かに難解で中々身についてる感じがしないです 専門書と言うか辞書を読んでる感覚で頭で分かったつもりになるだけと言うか… 料理本、よろしければURLか正式タイトル教えて頂けませんか?
299 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 20:09:02 ] 正規表現クックブック www.oreilly.co.jp/books/9784873114507/ いろんな実例が載ってるから便利でいいと思うよ。
300 名前:298 [2010/07/05(月) 20:53:05 ] >>299 買いました! これのが易しそうですね ありがとうございます 皆さんはハンドブックやクイックリファレンスみたいなの持ってますか?
301 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 22:33:53 ] 持っていない。 料理本も他人に推奨しながらまだ買ってないし、梟も2版だけどね。 3版で2版にない良いところがあったら教えてほしいとこr。
302 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 22:37:51 ] フクロウ本で否定の先読みが出てくるのって2章じゃないか 難解とかいう以前に読んでないんだろう
303 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 23:49:53 ] 質問です ●正規表現の使用環境 JavaScript ●検索か置換か? 置換 ●説明 「チョコレート」を「チョコ」に置換したいです でも「板チョコレート」「バレンタインチョコレート」はヒット(置換)させたくないです ●対象データ やはり板チョコレートよりも バレンタインチョコレートよりも 自分で買うチョコレート! ●希望する結果 やはり板チョコレートよりも バレンタインチョコレートよりも 自分で買うチョコ! (!(バレンタインチョコレート|板チョコレート)チョコレート),チョコ/g …ダメです。やっぱ難しいです。
304 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 00:04:27 ] (?<!板)(?<!バレンタイン)チョコレート
305 名前:276 mailto:sage [2010/07/07(水) 00:36:58 ] 久しぶりに戻ってきて、続きのコメントがあったことに気付きました。 >>282 さんがおっしゃる通りでした。0 文字マッチで動いてたんですね。 結局最後のものを使わせていただきました。 ありがとうございました。
306 名前:303 [2010/07/07(水) 12:28:01 ] >>304 上手くいきません 「<」って、どう言う意味なんですか?
307 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 13:14:47 ] この先生き残る、の逆verかw
308 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 14:08:25 ] >>306 JavaScriptは戻り読み使えないのか。ごめん (?<!...) で否定の戻り読み。「左に"板"も"バレンタイン"もない"チョコレート"」って意味 これならどうだろ var s = "やはり板チョコレートよりも\nバレンタインチョコレートよりも\n自分で買うチョコレート!"; s..replace(/(板|バレンタイン)?チョコレート/g, function(str, p0){ return p0 ? str : 'チョコ'}); https://developer.mozilla.org/ja/Core_JavaScript_1.5_Guide/Regular_Expressions https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/String/replace
309 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 17:39:20 ] 行頭のひとつ、または連続するスペースの それぞれひとつひとつを全て検索対象にする (連続したものをひとまとまりとして扱うのではなく。そして文中のスペースは対象にしない) には、どう書けばいいですか?
310 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 18:33:14 ] 自己解決しました
311 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 18:46:20 ] どんな風に解決したか書いてくれよ。
312 名前:309 mailto:sage [2010/07/07(水) 19:30:22 ] >>310 は自分じゃないけど でも実際自己解決しました 解決って、その通りのことができたわけじゃないんだけど やろうとした目的は果たせたんで、おkとします >>310 さん、せっかくすばらしい人間性を披露してくださったのに あなたがワクワク期待してたような反応してあげられなくて、ごめんなさい
313 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 19:34:21 ] つか報告だけなら来なくていいよ。
314 名前:デフォルトの名無しさん [2010/07/08(木) 09:42:56 ] >>308 動かないっす(;´Д`) ブラウザはFF JavaScriptに限らずVBscriptでも動けばいいと思ったんですが 厳しそうですね… これって、やろうとしてる事は前方参照否定になるんですかね?
315 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 13:16:00 ] >>314 x s..replace o s.replace
316 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 17:54:33 ] ●正規表現の使用環境 PHP5 ●検索か置換か? 検索 ●説明 [[ と ]] に囲まれた文字列を配列で取得したい ●対象データ [[hare]][[ame]][[kumori]][[yuki]][[]][[kaminari]][[taifuu]] ●希望する結果 matches[0] = hare matches[1] = ame matches[2] = kumori matches[3] = yuki matches[4] = matches[5] = kaminari matches[6] = taifuu よろしくお願いします。
317 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 07:36:38 ] 最近、正規表現ってことばをよき聞きますが これってどんな人がどんな時に使うんでしょうか? ぐぐって調べてもイマイチ意味が分かりませんし いったいどんな人が使ってるのか疑問です。 自分みたいにパンピーは知らなくても無問題でしょうか?
318 名前:314 [2010/07/09(金) 08:25:23 ] >>308 ,315 ありがとう! でも正規表現だけだと、無理って事? >>317 君は知る必要ないね 一般事務職でも使うケースはあるけど ワイルドカードだけ取り敢えず覚えておいては? と、正規表現初心者の俺が(ry
319 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 10:43:04 ] MS-DOS時代の人間なんで ワイルドカード(*、?だけですけど)の使い方は分かってます。
320 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 11:22:26 ] 正規表現を使うソフトと出会ったら勉強すればいい。 出会ってもないのに知る必要はないと思う。
321 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 15:36:10 ] 正規表現とワイルドカードを一緒くたにすると 怖いお兄さん(お姉さんも可)に怒られるからよい子は注意な
322 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 18:26:02 ] 心配するな。 ここで正規表現って騒いでるやつも知らないから。 その証拠にワイルドカードぐらいしか言えないだろ?w
323 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 20:39:02 ] ドロー4!
324 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 09:01:52 ] 最近、SQLってことばをよき聞きますが これってどんな人がどんな時に使うんでしょうか? ぐぐって調べてもイマイチ意味が分かりませんし いったいどんな人が使ってるのか疑問です。 自分みたいにパンピーは知らなくても無問題でしょうか?
325 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 09:03:32 ] 最近、HTMLってことばをよき聞きますが これってどんな人がどんな時に使うんでしょうか? ぐぐって調べてもイマイチ意味が分かりませんし いったいどんな人が使ってるのか疑問です。 自分みたいにパンピーは知らなくても無問題でしょうか?
326 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 18:51:05 ] 最近、クラウドコンピューティングってことばをよき聞きますが これってどんな人がどんな時に使うんでしょうか? ぐぐって調べてもイマイチ意味が分かりませんし いったいどんな人が使ってるのか疑問です。 自分みたいに頭がクラウドな香具師は知らなくても無問題でしょうか?
327 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 20:53:00 ] 企業がマスゴミをだますときに使う っつーかスレ違い
328 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 21:49:10 ] 正規表現を導入することでミッション クリティカルなシステムから モバイル アプリケーションまで対応できる高い信頼性を備えた アプリケーションを構築することができます。 正規表現で企業内に存在する多数のデータを統合し、全社員がデータを活用できる ビジネス インテリジェンス基盤として堅牢で実績のあるハイパーバイザーを構築し 不要なリスクやオーバヘッドを回避できます。 正規表現の仮想インフラストラクチャ機構にはデータを安定して管理するさまざまな機能はもちろん、 データを活用・分析する機能まで、すべての機能がオールインワンで備わっているます。 高いスケーラビリティとバランスのとれたトータルクオリティーを活用することにより あなたの快適ライフをサポートします。
329 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 21:58:55 ] OBICの中の人乙
330 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 09:29:54 ] >>328 ユーのランゲージはファンタスティックね
331 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 10:15:52 ] ルー柴乙
332 名前:デフォルトの名無しさん [2010/07/14(水) 22:16:49 ] ●環境 vb.net ●したいこと 3文字以上の繰り返し表現を抽出 ●サンプル 例文1)死にたい死にたい死にたい死にたい死にたい 結果1)死にたい 例文2)筋肉バスターと阿修羅バスター 結果2)バスター ってのを正規表現でやるのは無理でしょうか・・・
333 名前:デフォルトの名無しさん mailto:sage [2010/07/15(木) 00:06:01 ] 例文3) 阿修羅像と筋肉バスターと阿修羅バスターとジェットコースター こういうときはどういう結果になって欲しいの 処理系側に頼るにしてもあんまりロジック考えたくない
334 名前:デフォルトの名無しさん mailto:sage [2010/07/15(木) 00:54:48 ] >>332 英語ならともかく日本語じゃ無理じゃないか 形態素解析 単語 頻度 なんかでぐぐるといいかも
335 名前:デフォルトの名無しさん mailto:sage [2010/07/15(木) 03:49:25 ] >>333 > 阿修羅像と筋肉バスターと阿修羅バスターとジェットコースター 「阿修羅」 「バスターと」 じゃね?
336 名前:デフォルトの名無しさん mailto:sage [2010/07/15(木) 04:52:36 ] 部屋とYシャツと私
337 名前:デフォルトの名無しさん mailto:sage [2010/07/15(木) 07:44:51 ] ヘアとワイセツとタワシ
338 名前:デフォルトの名無しさん [2010/07/15(木) 08:16:33 ] 女子高生と機関銃と私
339 名前:デフォルトの名無しさん mailto:sage [2010/07/15(木) 09:16:17 ] 中国と韓国と北朝鮮
340 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 10:14:07 ] >>316 phpならsplit("\]\]\[\[", str)で配列に分割して 最初と最後の要素から"[["と"]]"を取り除いた方が早いんじゃない? 正規表現にこだわる理由は何だろう >>339 処理結果:特定アジア
341 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 10:53:38 ] '[[hoge]] fuga [[piyo]]' みたいな入力に弱いのと直感的じゃないからじゃまいか できれば「文字列を左から走査していき「[[ と ]] に囲まれた文字列」を すべて拾い上げる」ように書きたいところ というわけで preg_match_all に "\[\[(.*?)\]\]" を渡すとかどうだろ PHP知らないんで適当だが
342 名前:デフォルトの名無しさん mailto:sage [2010/07/17(土) 12:05:18 ] >316です。 ありがとうございます。 実際には [[hoge]]今日は[[fuga]]いい[[tenk]]天気です みたいに間に文字は入るので、正規表現でしか出来ない(効率の面で)と判断しました。 この中のhoge、fuga、tenkiのみを配列の中に入れたかったのです。 結局preg_match_allで "/\[{2}[0-9A-Za-z]*\]{2}/"とする事で解決しました。
343 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 02:24:03 ] >>335 「スター」は抽出しないのか?
344 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 02:30:15 ] >>343 それを抽出するなら「スターと」「ターと」も必要じゃないか?
345 名前:デフォルトの名無しさん mailto:sage [2010/07/18(日) 02:38:40 ] ちゃんと作ったらもっと色々でてきそうだなw
346 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 18:08:06 ] /** コメント **/ // コメント 上記のコメント箇所で、コメント内の各一文字を「_」に置き換える方法はあるでしょうか? コメント行を削除せずに、一度コメントを省いてからソース検索をしたいと思っておりまして。 ____↓ _____↓ ____↓ _______↓
347 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 18:12:00 ] /\/[\/*].+(\n|*\/)/_/s
348 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 18:15:53 ] 実際のプログラムだと運がよければできるぐらいだな。 コメントかどうか判断がつきにくい文字列リテラルとか あるんで病的なケースに完全に対応するのは難しい。 多少誤爆があってよければ適当にやりゃできるだろ。 正規表現といっても使い方はエディタや言語によって 違うので何を使ってやりたいかを決めてそっちのスレで 聞いたほうがいいかも。
349 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 18:16:18 ] >>346 while ((c=getchar()) != EOF) { if (c == '/') { c = getchar(); if (c == '/') { putchar('_');putchar('_'); while (c=getchar()) != '\n') putchar('_'); } else if (c == '*') { LOOP: putchar('_');putchar('_'); while (c=getchar()) != '*') putchar('_'); if ((c=getchar()) != '/') goto LOOP; putchar('_'); } } putchar(c); }
350 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 19:09:53 ] >>349 ありがとうございます。 正規表現だけではできないですかね…
351 名前:デフォルトの名無しさん mailto:sage [2010/07/26(月) 19:15:36 ] 正規表現ってマッチするだけだからねー。
352 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 10:00:25 ] >>351 あ、すみません。 正規表現とリプレイスの組み合わせでできないですかね? 以前どこかのサイトで見かけたことがあったのですが、 場所忘れ&これを実現した正規表現だったか覚えていなくて…
353 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 11:45:54 ] >>347 これだと1コメントで「_」になってしまいます。 コメントが10文字ある場合は「_」も10個ほしいです。 先読み、戻り読みを駆使してうまくやっていたような気がしたんですが、 すみません、思い出せないです。
354 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 12:01:28 ] PHPならpreg_replaceとかあるが・・・。
355 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 12:09:56 ] 検索にひっかからなくするという目的なら1文字になっちゃってもいいと 思うんだけどね。不必要に問題を複雑にしてるような。
356 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 14:23:36 ] (//|\G).+?(?=.*$)でうまくいくと思ったがちょっとおかしい a // b で a ____ になると思ったが ______ になってしまう なぜ\Gが行頭に引っかかるのだ! ちなみにjavaです
357 名前:デフォルトの名無しさん mailto:sage [2010/07/27(火) 19:15:52 ] いや \G は文字列先頭にもマッチするもんだろう。
358 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 11:52:25 ] >>346 「コメントを省いてからソース検索」するのが目的なのに 「コメントが10文字ある場合は「_」も10個ほしい」理由がわからない 他に目的があるのなら全部書き出して最終的に何がしたいか明示すべき
359 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 13:23:24 ] >>358 そうですねf^^; やりたいことはソース中の文字列で日本語コメントを抽出です。 その際、検索結果の行番号を元のソースに合わせたいです。 複数行コメントをカットしてしまうとずれが生じるので、全てスペース(改行は変換せず)を考えています。 かなり前にこのスレッドで答えをもらったと思うのですが、それを忘れてしまいまして
360 名前:デフォルトの名無しさん mailto:sage [2010/08/02(月) 17:24:38 ] >>359 > その際、検索結果の行番号を元のソースに合わせたいです。 「コメントが10文字ある場合は「_」も10個ほしい」理由がわからない
361 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 15:50:50 ] 仕様がわからない状態でコーディングはできない
362 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 17:33:47 ] 自分が何をしたいのか、を他人にうまく伝えられない人
363 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 17:40:10 ] >「コメントが10文字ある場合は「_」も10個ほしい」理由がわからない わからんのなら、おとなしくすっこんでろよw 仕様は>>346 で明確に示してあるだろ。これ読んでもわからんの? わかる人が答える。わからない人は指をくわえて黙って見ている。 これが掲示板の作法だろ。
364 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 17:45:16 ] >>346 だけ読んで理由がわかったらエスパーすぎる 行番号を維持するだけでなく桁数/文字数も維持したいのだろう
365 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 20:10:42 ] エスパーも何も、これ以上わかりやすい説明は無いと思うが
366 名前:デフォルトの名無しさん mailto:sage [2010/08/03(火) 20:47:16 ] せめて文字列リテラル中にコメントと紛らわしい文字列は ないぐらいは仮定しないととんでもなく難しい気がするな。 あとこういうのを間違わずにやろうとすると結構大変。 // hogehoge /* hogehoge /* hogehoge // hogehoge */ hogehoge
367 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 07:41:17 ] >>362 むしろ自分が何をしたいのかさえ自分で理解できていないレベル
368 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 07:48:43 ] >>366 コメントについてはネストしたものを正規表現だけで取り扱うのは不可能と 「詳説 正規表現」に書いてあるけどな その例はネストしていないけど
369 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 11:49:47 ] >>368 そんなもん複数行モードで(/\*.*?\*/|//.*$)だろ… ここで質問した俺が馬鹿だった それじゃ一生答えが導けないよ
370 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 11:56:56 ] /* ここからコメント /* ネスト */ ここもコメント */ こういうのをなんとかするのは普通の正規表現の範囲では無理。
371 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 12:02:01 ] 文字列中に改行があってもマッチさせることは正規表現で可能でしょうか? 例えば something を検索したいとすると some\nthing、so\nmething, someth\ning などもマッチした、と判定したいんです。 今はこんな感じで処理しています。 「改行の位置を記憶→改行を全削除→文字列のマッチ→改行をもう一度挿入」 これが正規表現でできると楽になるので方法がわかる方いたらどうか教えてください。 使っている言語はJAVAですが、 他の言語の正規表現でもできるかどうか教えてもらえると助かります。
372 名前:デフォルトの名無しさん mailto:sage [2010/08/04(水) 12:38:56 ] >>369 それで適当な固定文字列に置き換えるだけなら簡単なんだけど 文字数を保存して間を_にしたいとかいうから面倒なわけです。 perlならeval使えるから加工するプログラム書けば一発ですが、ただの エディタの置換機能だとそうもいかん場合も多いんじゃねーの? 何を 使ってるのかも示されてないのでなんともいえんけどさ。 $str = qq{ // hogehoge /* hogehoge /* hogehoge // hogehoge */ hogehoge }; $str =~ s%(/\*(.*?)\*/)|(//([^\n]*))%($1 ne '')? ('/*'.to_underscore($2).'*/'): ('//'.to_underscore($4))%gse; print $str; sub to_underscore { my($s) = @_; $s =~ s/\S/_/g; return $s; }
373 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 07:56:23 ] >>369 要求仕様を先に確認しろ >>371 処理系のよっては改行文字を無視するモードがある Javaはどうだったかな
374 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 09:10:16 ] >>371 perlなら undef $/ だったかな
375 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 09:17:10 ] >>371 s\n?o\n?m\n?e\n?t\n?h\n?i\n?n\n?g
376 名前:デフォルトの名無しさん mailto:sage [2010/08/05(木) 10:42:50 ] ふざけないでください
377 名前:デフォルトの名無しさん mailto:sage [2010/08/10(火) 22:29:01 ] Perlで前方一致の中に正規表現を使うことってできますか? /(?<=.*_number=)\d*/のような感じでやりたいのですが・・・
378 名前:デフォルトの名無しさん mailto:sage [2010/08/10(火) 23:25:35 ] >>377 やって見りゃVariable length lookbehind not implementedになるのはすぐわかるだろ。 この例だと.*は余計なので取り除いて /(?<=_number=)¥d*/ にすればいいと思うが。
379 名前:デフォルトの名無しさん mailto:sage [2010/08/11(水) 06:32:21 ] >>378 ありがとうございます、できないんですね・・・ では、/(?<=x_.*_number=)\d*/のように書きたい場合は他に書き方はあるでしょうか?
380 名前:デフォルトの名無しさん mailto:sage [2010/08/11(水) 07:10:06 ] \d*を見つけられればいいって感じなら /(x_.*_number=)(\d*)/ みたいにすれば?
381 名前:デフォルトの名無しさん mailto:sage [2010/08/11(水) 07:17:20 ] >>380 ありがとうございます。 \d*を見つけるだけでなく、$&に取り出したいです。
382 名前:デフォルトの名無しさん mailto:sage [2010/08/11(水) 08:39:22 ] perlなら¥K使えば? perl -e '"x_hoge_number=100"=~/x_.*_number=¥K¥d*/ and print $&'
383 名前:デフォルトの名無しさん mailto:sage [2010/08/11(水) 13:52:06 ] $&じゃなきゃダメなの?数字欲しいだけなら /x_.*_number=(\d*)/ で$1見るのが楽チンな気がするんだけど。
384 名前:デフォルトの名無しさん mailto:sage [2010/08/11(水) 20:18:38 ] >>382 >>383 数字だけ取り出せれば良かったので$1を使うことにしました。 ありがとうございました。
385 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 17:59:53 ] ●正規表現の使用環境 .net Framework 2.0 - 3.5 (C#) ●検索か置換か? 検索 ●説明 artist, titleの各グループの文字列を取得したい ●対象データ Artist - Title ●希望する結果 artist = Artist title = Title よろしくおねがいします。
386 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 18:44:28 ] 正規表現の詳しいサイトとか知りませんでしょうか? ずぶの素人なので、どこのサイトで勉強したら良いのか分りません。
387 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 18:55:38 ] 適当なテキストエディタ入れて適当な正規表現解説サイト見て 適当に入力して試してたら数分で理解できるよ
388 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 19:12:44 ] >>387 適当厨ww
389 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 19:16:28 ] 右も左もわからないんならテンプレのここでいいんじゃないか funcchan.blog16.fc2.com/ >>385 こういうこと? 違ってるならもっと具体的な入力データとほしい結果の例を挙げて using System.Text.RegularExpressions; ... string[] words = Regex.Split("Artist - Title", " - "); string artist = words[0]; string title = words[1];
390 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:04:02 ] >>389 Artist, Album, Titleが含まれている文字列からそれらを正規表現で抽出したいです。 例えば 山田耕筰 - 赤とんぼ を (?<artist>.*?) - (?<title>.*?) みたいな感じで。 元の文字列がどういう形式か不定なので、Splitはあまり使いたくないのですが・・・
391 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:18:42 ] Artist や Title に ' - ' が含まれたりする形式だと困るよね。
392 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:44:27 ] うん、" - " がフィールドの区切りとして使えないのなら無理じゃない? それぐらいは保証されてると思って>>389 を書いた 自分だったら " - " が文字列に2つ以上入ってたら不正な入力として受け付けないか 許される状況であれば脇によけておいて後で手作業で処理するよ
393 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:44:49 ] それは人間が見ても判別困難ですし、考慮していません。 とりあえず (?<artist>.*) - (?<title>.*?) にしたところ希望の動作は得られましたが、 Artist - Title そのものがグループ(グループ名なし)として抽出されています。 これは解決できますか?
394 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:47:02 ] よくわかんないから C# のコード貼ってちょ
395 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:47:19 ] おっと、>>393 は>>391 宛です。
396 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:47:59 ] >>393 解決って何よ 希望の動作したならそれで十分でしょ
397 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 21:52:21 ] >>396 おっしゃる通りなんですけど、なんか気になるので。 >>394 一応ソースです。 //source = "山田耕筰 - 赤とんぼ" //expression = "(?<artist>.*) - (?<title>.*?)" Match match = expression.Match(source); Group group; group = match.Groups["artist"]; if (group == null) { artist = string.Empty; } else { artist = group.Value; } ・・・ 以下Groups["title"]、Groups["album"]について同様
398 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 22:03:03 ] >>397 全体へのマッチはグループ指定してないからグループ名なしのマッチでいいじゃん
399 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 22:26:13 ] それは仕様ですか?それともexpressionのせいでしょうか?
400 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 22:41:39 ] 仕様。ほかの言語も似たようなもの ttp://msdn.microsoft.com/ja-jp/library/system.text.regularexpressions.groupcollection%28v=VS.95%29.aspx > このコレクションには、1 つ以上の System.Text.RegularExpressions.Group > オブジェクトが格納されています。一致が成功した場合、コレクションの > 1 つ目の要素には、一致した文字列全体に対応する文字列が含まれます。 あと>>397 の正規表現だと (?<title>.*?) は空文字列にマッチしてないかな
401 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 23:03:41 ] >>400 なるほど、仕様なのですね。 確かに(?<title>.*?) は該当箇所が空の場合でもマッチしてます。 該当箇所が空の場合マッチさせないようにするには (?<artist>.*) - (?<title>.*) とすればOKでしょうか?
402 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 23:07:29 ] *を+にすればいいんじゃね?
403 名前:デフォルトの名無しさん mailto:sage [2010/08/13(金) 23:26:07 ] >>402 (?<artist>.+) - (?<title>.+) にしたらマッチしなくなりました。 動作上はこれで問題ありませんので、これにしようと思います。 今回は大変勉強になりました。 >>389-402 のみなさん、ありがとうございました。
404 名前:デフォルトの名無しさん mailto:sage [2010/08/14(土) 06:50:19 ] 質問があります。 私は、HTMLでホームページを作ったのですが、 titleタグをちゃんといれて作ったのですが h1タグを入れるのを忘れてしまっていました。 そこで、各ページのh1タグに、それぞれのtitleタグと同じものを入れたいのですが ホームページのページ数が1000以上なので、 多過ぎて大変です。 そこで、正規表現をつかって、うまく対処する方法を教えてください。
405 名前:デフォルトの名無しさん mailto:sage [2010/08/14(土) 06:59:32 ] stylesheet
406 名前:デフォルトの名無しさん mailto:sage [2010/08/14(土) 09:06:17 ] >>404 <title>(.*?)</title> で title のテキストを検索 あとは <body> を検索して <body><h1>$1</h1> に置換 わけわかんなかったら親切な人がスクリプト貼ってくれるのを祈る
407 名前:デフォルトの名無しさん mailto:sage [2010/08/14(土) 11:43:08 ] <?php $path = "./"; $ext = ".html"; $insert_point = "<div class=\"hoge\">"; $d = dir($path); while($f = $d->read()){ if(strpos($f,$ext) === FALSE) continue; $txt = file_get_contents($f); if(preg_match('/<title>(.*)<\/title>/', $txt,$hits)){ $txt = str_replace($insert_point,"$insert_point\n<h1>$hits[1]</h1>",$txt); if(!$fp = fopen($f,"w")) continue; fputs($fp,$txt); fclose($fp); } } ?>
408 名前:デフォルトの名無しさん mailto:sage [2010/08/15(日) 14:26:57 ] 拙い質問で申し訳ないのですが 現在、改行コードを含めた任意の文字列を"[\s\S]*"としているのですが ブラケット中の最初の文字がマッチした場合、それ以降は評価しないとしたら 一般的な文章では"\s"よりも"\S"にマッチする文字の方が多いことを考えて この場合"[\S\s]*"と直した方が速度は上がると考えて良いのでしょうか? よろしくお願いします。
409 名前:デフォルトの名無しさん mailto:sage [2010/08/15(日) 15:12:35 ] 実際に試してみた方が早いんじゃね?と言ってみる
410 名前:408 mailto:sage [2010/08/15(日) 15:18:56 ] そうですか。 他で質問してみます。どうもありがとうございました。
411 名前:デフォルトの名無しさん mailto:sage [2010/08/16(月) 09:20:33 ] >>410 正規表現エンジンの動作を理解した方が早道