1 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 00:36:04 ] 正規表現(Regular Expression)スレです。 質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。 【 前スレ 】 正規表現 Part5 pc12.2ch.net/test/read.cgi/tech/1212498448/
459 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 09:51:28 ] perlの正規表現の(?PARNO)みたいに再帰を書けるように 拡張されたのを使えばなんとかなるけどあれを正規表現と 呼んでいいのか激しく疑問w さらに全く正規表現じゃなくなるが頭に #define FuncA(x,y,z) FuncD(z,x,y) を追加してcppに食わせれば一発なんだけどね。 % cat hoge #define FuncA(x,y,z) FuncC(z,x,y) 1 FuncA(1,2,3) 2 FuncA(1,FuncB(2,3),4) 3 FuncA(1,"string2,3",4) 4 FuncA(1,2,3):FuncD(1,2,3) % cpp hoge # 1 "hoge" # 1 "<built-in>" # 1 "<command-line>" # 1 "hoge" 1 FuncC(3,1,2) 2 FuncC(4,1,FuncB(2,3)) 3 FuncC(4,1,"string2,3") 4 FuncC(3,1,2):FuncD(1,2,3)
460 名前:デフォルトの名無しさん [2009/09/18(金) 13:14:55 ] スルーされにくい質問のテンプレと例 ●正規表現の使用環境 5.10.0 ●検索か置換か? 置換 ●説明 先頭の<と行末の>を削除したい ●対象データ <XXXXXX> XXXXXX> <XXXXXX ●希望する結果 XXXXXX
461 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 13:16:46 ] スルー力を試されているのか?
462 名前:デフォルトの名無しさん [2009/09/18(金) 13:24:16 ] >461 な、なぜだ…このテンプレつかてるのに。 あ。パールです…
463 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 13:31:32 ] > ●正規表現の使用環境 > 5.10.0 言いたいことはわからんでもないが。
464 名前:デフォルトの名無しさん [2009/09/18(金) 13:34:45 ] >463 Linux 2.6.30.5-43.local.fc11.i686.PAE #1 SMP Wed Sep 16 16:46:32 JST 2009 i686 i686 i386 GNU/Linux あら勘違いしたかな?これでだいじょぶですか?
465 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 13:39:08 ] >>460 しむらー、一行目 /^<?(.*?)>?$/ Perlでは実行確認してないけど多分大丈夫だろ
466 名前:デフォルトの名無しさん [2009/09/18(金) 13:43:34 ] >465 うわーありがとう。 もーちょっとだったのに汗 助かりました。
467 名前:455 mailto:sage [2009/09/18(金) 14:49:49 ] 簡単には出来なそうなんですね。わかりました。 対になる()や[]の一致書式の方はありますか? これが出来れば結構いろいろ応用がききそうなんですが。
468 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 15:32:46 ] 厳密な意味での正規表現では無理なことの代表的なものが、括弧の対応。 最近の拡張ではできるものもあるけど、やりかたがそれぞれなので、 一般的に説明できない。 つーかその例のようなのは>>459 の言うようにcpp使うのが楽だな。
469 名前:デフォルトの名無しさん [2009/09/18(金) 18:48:14 ] 「正規」表現って言い方ってどうよ? 正規分布 normal distribution 正規表現 regular expression
470 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 19:22:31 ] 別に? 混乱するからどうしてもと言うなら 統計学のnormalを「標準」とでも脳内変換しとけ
471 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 20:03:18 ] >>469 何が問題なの? 異なる言語で単語が一対一に写像するなんてことは有り得ないんで、 その程度の不整合でいちいち悩んでると人生辛くなるよ。
472 名前:455 mailto:sage [2009/09/18(金) 22:35:18 ] 括弧処理には向いていないのでしたか。 それがわかっただけでも満足です。ありがとう。
473 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 23:05:45 ] >>181 これ読んでみたけど本当に良い本だった。世界的に認められてるだけのことはある。 数学丸出しなのでかなり難しい内容だけど、オライリーのフクロウ本を一通り読んで DFAとNFAの違いを知りたいというモチベーションがあれば読み進められるかも。
474 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 23:16:09 ] /ヽ(´ー`)人(´∇`)人(`Д´)ノ/
475 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 20:12:29 ] カッコの対応を見つけるのって無理なのか・・・。意外だった。
476 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 21:36:59 ] C#の正規表現で悩んでいます。 お時間あればよろしくおねがいします ●正規表現の使用環境 .NET Framework 3.5 ●検索か置換か? 置き換え ●説明 ()の文字を取り除きたい ●対象データ W(ジョーカー) W(ルナ) ●希望する結果 W W string Title = "W(ジョーカー)"; string nobrackets = "<title>(.*)"; Regex re = new Regex(nobrackets); Match m = re.Match(Title); Title = m.Groups["title"].Value; で、nullなんです。アドバイス乞う…。
477 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 22:15:26 ] (1)あんまり弄らなかった方 string Title = "W(ジョーカー)"; string nobrackets = @"(?<title>W)\(.*\)"; Regex re = new Regex(nobrackets); Match m = re.Match(Title); Title = m.Groups["title"].Value; (2)ちょっと弄ってみた方 string Title = "W(ジョーカー)"; string nobrackets = @"\(.*\)"; Regex re = new Regex(nobrackets); Title = re.Replace(Title, ""); >>476 何がしたいのかをもうちょっと良く考えてみるといい
478 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 22:15:26 ] 本当に取り除くだけでいいのなら、こんな感じ? Title = Regex.Replace(Title, @"\(.*?\)", "");
479 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 22:52:03 ] thanks!
480 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 11:17:01 ] C#の正規表現で質問です。 ●正規表現の使用環境 .NET Framework 3.5 ●検索か置換か? 置き換え ●説明 ホームページのすべてのタグを取り除きたい ●対象データ www.asahi.com/shopping/pc_camera/special/TKY200909240072.html ●希望する結果 プレーンテキスト ●現状 '); document.write(''); //--> などいくつかのタグが残る状況です。 ●いま書いている正規表現 Regex regex = new Regex("<.*?>", RegexOptions.Singleline); html = regexRemoveAllTag.Replace(html,"");
481 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 11:35:31 ] >>480 「いま書いている正規表現」の処理の前段で <script>...</script> を削除すると良いと思われ。
482 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 12:14:56 ] 早速ありがとうございます。 html = Regex.Replace(html, "<script>.*</script>", ""); Regex regex = new Regex("<.*?>", RegexOptions.Singleline); html = regexRemoveAllTag.Replace(html,""); としてみましたが、状況に変化なしです。
483 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 12:56:40 ] えーと、前段の方は <script.*[^>]>.*?</script> みたいな感じで Multiline で。
484 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 13:02:57 ] >>480 何でそうなるかの原因を考えよう。 想定と違う動きをした箇所を比較してみるといい。 document.write('ipt>'); といった、JavaScript内で閉じタグを記述してる箇所に正規表現がひっかかって');が残る。 だから481は<script type= .... </script>を先に除去すればいい、って言ってるのでしょう。
485 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 13:44:24 ] > html = Regex.Replace(html, "<script>.*</script>", ""); なんでこっちだけRegex.Replaceなんだ? たぶん、これでいいんじゃないかな Regex regex1 = new Regex("<script>.*?</script>", RegexOptions.Singleline); Regex regex2 = new Regex("<noscript>.*?</script>", RegexOptions.Singleline); Regex regex3 = new Regex("<.*?>", RegexOptions.Singleline); html = regex1.Replace(html,""); html = regex2.Replace(html,""); html = regex3.Replace(html,"");
486 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 18:34:41 ] みなさん、ありがとうございます。 >>485 これがいちばんいけそうです。 www.asahi.com/showbiz/stage/spotlight/OSK200909250086.html をやってみたら、まだ下のほうにだいぶタグが残るのですが…。 >>484 考えながらやってみてはいるのですが、のこったタグの原因はほとんど判読不明…。 たとえば、 impAserver = "imp.asahi.com "; が残るのですが…。 >>483 実際に試したところ、multilineよりはsinglelineのほうが、タグを除去できる率は高いようです。
487 名前:484 mailto:sage [2009/09/25(金) 19:22:18 ] >>486 ほんとに考えてるのかなあ……。 <script>だと<script type="text/.... って書いてあるのに引っかからないわけですよ。 var wc = new WebClient() { Encoding = Encoding.GetEncoding("EUC-JP") }; var html = wc.DownloadString("www.asahi.com/showbiz/stage/spotlight/OSK200909250086.html "); var result = Regex.Replace(html, "<script.*?</script>", "",RegexOptions.Singleline); result = Regex.Replace(result, "<.*?>", "", RegexOptions.Singleline); Console.WriteLine(result);
488 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 02:10:55 ] 考えてない、考えてない・・・ 他人の書いたのをコピーしてるだけ。
489 名前:483 mailto:sage [2009/09/26(土) 02:30:20 ] >>486 > 実際に試したところ、multilineよりはsinglelineのほうが、タグを除去できる率は高いようです。 率とかそんなんじゃなくてさあ、 HTML のソース見て考えてる? もうめんどくせえなあ。
490 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 00:50:56 ] >>486 えーと、差分を見る方法を用意してる? 処理前と処理後を比較すれば、どこが除去されたのか すぐ分かるはずなんだけど。 windiffとかWinMergeでも使え。
491 名前:デフォルトの名無しさん [2009/10/01(木) 07:09:09 ] わかりました
492 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 07:11:38 ] HTMLのサニタイゼーションに正規表現を使うなと……
493 名前:デフォルトの名無しさん [2009/10/01(木) 13:32:47 ] 先頭の改行(LF)を削除するにはどうすればいいのでしょうか? $text =~ s/^\n//s; では削除されませんでした。
494 名前:493 [2009/10/01(木) 13:38:11 ] あ、されてました。 2つ改行がありました。 2つの改行を削除するには、/^\n\n//では削除されませんでした。
495 名前:493 [2009/10/01(木) 13:42:36 ] あれ? これは改行じゃないのかもしれない。 なんかあります。 $textの先頭に改行される何かがあります。 CRLF、CR、LFのいずれもないのに、改行される何かがあるんです。
496 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 13:46:00 ] BOMか?
497 名前:493 [2009/10/01(木) 13:56:53 ] >>496 BOMじゃないですが、UTF-8です。
498 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 14:02:12 ] コード16進で表示すると何が出る?
499 名前:493 [2009/10/01(木) 14:03:40 ] /^\n//をやった直後に/^.//で最初の得体も知れない改行を削除しますと、◆の中に?がある文字が2つ出ました。 しかも、次の文字が消滅しました。
500 名前:493 [2009/10/01(木) 14:06:35 ] >>498 16進数での開き方を調べます。
501 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 14:08:20 ] 楽しそうだな。これを機会にコンピュータ上で文字はどのように 表現されているのか勉強するといいと思うよ。
502 名前:493 [2009/10/01(木) 14:16:26 ] バイナリエディタで開いてみました。 その不気味な改行の部分は、EF BB BF 0D 0A E3でした。 この正体は何なのでしょうか? >>501 勉強がんばってみます。
503 名前:493 [2009/10/01(木) 14:23:57 ] EF BB BFってどうやらBOMですね。 何とかしてみます。
504 名前:493 [2009/10/01(木) 14:26:08 ] でも出力されたテキストをメモ帳で保存したからBOMが付いたのかも知れませんね。 よく分かりませんね。
505 名前:493 [2009/10/01(木) 14:39:43 ] すみません。 全てはポックンのミスでした。 改行コード消した後に、改行コード付加してました。 BOMとか関係ありませんでした。 BOMはメモ帳で開いたから付加されただけでした。 0D 0AはCRLFの改行コードでした。 本当にありがとうございました。
506 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 13:21:12 ] >>455 勉強がてら、ActivePerl 5.8.8で作ってみた。 色々調べて、いい勉強になった。 my $re1 = qr/(?:[^(),]+|"(?>(?:(?>[^"\\]+)|\\.)*)")*/; our $re2 = qr/\w+\((?:(??{$re1}),?|(??{$::re2}))*\)/; my @s = qw{ FuncA(1,2,3) FuncA(1,FuncB(2,3),4) FuncA(1,"string2,3",4) FuncA(1,2,3):FuncD(1,2,3) FuncA(1,FuncB(2,FuncC(3,"4),(5"),"\","),6) }; for (@s) { print "$_\n"; s/FuncA\(($re1|$re2),($re1|$re2),($re1|$re2)\)/FuncC($3,$1,$2)/; print "$_\n\n"; }
507 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 23:48:11 ] VB.NETの正規表現で質問です。 ●正規表現の使用環境 .NET Framework 3.5 ●検索か置換か? 置き換え ●説明 2行以上の連続した空の行(全角、半角スペースのみの行、または改行のみの行)を2行にしたい。 (1行の空の行は1行のまま、2行の空の行は2行のまま) ●対象データ AAA BBB CCC ●希望する結果 AAA BBB CCC ●現状 ●いま書いている正規表現 Dim r As Regex = New Regex("<.*?>", RegexOptions.Multiline) よろしくお願いします。
508 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 02:31:35 ] その「いま書いている正規表現」ってのは何を思って書いたの
509 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 12:20:24 ] <.*?> ・・・これは・・・。
510 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 12:28:14 ] "3行以上"の"空白行"を最長一致させて、それを2行の空白行に置換すれば良いんじゃない? 今確認出来る環境じゃないんで、適当に書くけども。 ([ ]*/n){3} → /n/n に置換。 こんなイメージでどう?スペース入ってるけど、投稿すると消えるとおもう。
511 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 14:32:25 ] \n\n\n\nが\n\n\nにならないか?つーかスラッシュ? ((\s| )*\n){2,}
512 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 14:51:11 ] 4から3にはならん 半分になるだろ
513 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 15:01:20 ] え、globalフラグなくてwhlieループとかなの?
514 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 16:55:11 ] {3,} なら3以上になるか。
515 名前:デフォルトの名無しさん mailto:sage507 [2009/10/12(月) 22:03:19 ] レスありがとうございます。 ([ ]*\n){3,} ((\s| )*\n){3,} これで出来そうですね。/は自分の環境の場合\に直します。 [ ]と( )の違いも試してみます。 ありがとうございました。
516 名前:デフォルトの名無しさん [2009/10/14(水) 00:43:45 ] とんちんかんなのかも知れんが、質問させてくださいな。 .NETの正規表現で"abc"という文字列を一回のreplaseで"b"にする方法はありますか?
517 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 01:28:02 ] >>516 >>4 つーか例は数個出してくれ 一個だけだと「/abc/を"b"に置換すればいい」とか言われても文句言えないぞ
518 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 01:37:17 ] 途中から丁寧語になるレスを最近よく見かけるんだが、 流行っているのでしょうか?
519 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 02:02:46 ] 随分語弊があった。すまんね。 環境: .NET 目的: 置換 説明: 特定の連続しない2つの文字列を取り除く 対象データ: ACB ADCB AECDB 結果: C DC ECD
520 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 02:29:11 ] 説明と例がちぐはぐな件 例に倣って、文頭と文末を一文字ずつ省けばいいのか? それとも説明に則るとして、特定の文字列がAとBならACBCBはどうなるんだ?
521 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 03:17:30 ] >>519 AとBをそれぞれ取り除くだけじゃん。 正規表現の必要な話か?
522 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 13:02:14 ] [0-9]?[0-9]:[0-9][0-9]J(am|pm) 詳説正規表現の3版を読んでいるのですが 時刻にマッチさせる表現の例として、上のような正規表現が 書かれています。 このJというは、なんですか?誤植かと思って、ネットで正誤表を見てみましたが 誤植ではないみたいです。Jでやると、時刻にマッチしません。やっぱり誤植ですか? 何か意味があるのでしょうか?
523 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 14:12:48 ] 誤植だと思う。 オライリーにメールすれ。
524 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 14:43:05 ] 3版の正誤表ってどこにあるの?
525 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 14:47:48 ] どもです。 2版の正誤表で確認しました。3版の正誤表はないっぽいですね。
526 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 14:49:05 ] ズコー
527 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 14:58:21 ] グーグルブックスで、第2版が閲覧出来ました。 問題の箇所を見てみますと、「J」は書かれていないです。 P20の四角でかこわれた解答の部分で 手元の3版では、+SIZEJ*=と書かれています。 >>522 で質問した正規表現はP25にかかれていますが グーグルブックスでは閲覧出来ないページとなっています。 ありがとうございました。
528 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 19:25:53 ] 初版は 「[0-9]?[0-9]:[0-9][0-9]●(am|pm)」 こんな表現。 ●は、60%網点の丸。
529 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 21:11:01 ] 「●は、60%網点の丸」は、確かふくろう本では空白を見やすくするための記法でしたね。
530 名前:デフォルトの名無しさん [2009/10/23(金) 10:12:47 ] 正規表現をつかって ある原稿の 文末から10文字を抽出しろ。と課題がでたのですが どうしたらできるでのしょうか
531 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 10:20:36 ] 課題なら自分で考えろよ
532 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 10:21:54 ] 文末に密着した任意の文字10個の正規表現でマッチさせればできるだろ 宿題は自分でやれ
533 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 10:26:17 ] 文末が文章の終わりなのか、文の終わりなのか分からないが…… .{10}$
534 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 11:01:52 ] ワードの文章の文末表現を10文字程度抽出して分類せよ、という問題でした。 申し訳ないのですが本当によくわからないので、 検索する文字列、置換後文字列それぞれにどう入力したらいいのか教えてくれませんか。
535 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 11:22:26 ] ワードwww あれ正規表現じゃなかったような ヘルプ見るかぐぐれ、それでもわからないならあきらめろマジで
536 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 11:35:34 ] いやだからさ 課題ってのは自分で考えてやらないと意味ないでしょ? ここで答え教えて貰ってそれ提出すればそれでいいと思ってるの?
537 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:02:34 ] 「オプション」「ワイルドカードを使用する」 「??????????。」
538 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:05:07 ] >>537 >>536 みたいな文章の文末が判定できませんやりなおし
539 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:14:36 ] ??????????[。??]
540 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:38:32 ] ワードの文章、抽出して分類…ワードのスレで聞いたら?
541 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:50:48 ] 甘やかすな 課題は自分で考えさせるべきだ
542 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 13:23:10 ] 抽出するなら、VBAの知識が必要かもな
543 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 08:54:18 ] VBSのregexpを呼び出して使う感じかなぁ。
544 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 11:37:03 ] 特定の1文字をグループで取り出し、その1文字を後方参照で否定で使いたいのですが、 うまくいきません。つまり[^\1]がうまく動作しません(構文エラーにはならないのですが)。 おそらく\1は1文字でなく文字列なので文字クラスの中で使えないのだと思いますが、 では\1を否定で使うにはどうしたらいいですか。(!\1)なんてありませんよね。
545 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:48:08 ] >>544 >>1 まず処理系を明示しろ
546 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:48:50 ] ものによるけど否定先読みでどうにかならん?
547 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:00:29 ] perlなら /(.)(?!\1)./ でいけたよ。
548 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 00:09:38 ] ●正規表現の使用環境 VB.NET ●検索か置換か? 検索 ●説明 htmlタグの外にある文字を取得したい ●対象データ <hoge hoge hoge hoge> <hoge> <hoge> <hoge hoge hoge> あいうえお <hoge hoge> <hoge hoge hoge hoge hoge> ●希望する結果 あいうえお 対象のデータの中にはタグの外の文字列は1箇所(1行)しかありません。 何行目にあるかは不明です。 お願い致します。
549 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 01:24:47 ] >>548 説明からするとサンプルのようにきれいに揃っていそうだし "<"で始まらない行を抽出(もしくは始まる行を削除)で十分かもしれない VB.netは知らないから具体例はパス
550 名前:544 mailto:sage [2009/10/27(火) 02:03:55 ] すみません。処理系はC#です。 否定先読みという機能を勉強したところ、C#の正規表現にも先読みは あったので、これで実現することができました。ご教授有難うございました
551 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 11:23:38 ] javascript 抽出 1回では難しそうなので2回に分けてやっているのですが str=str.match(処理1) str=str.match(処理2) とやるとうまくいきません 下がないと処理1はできます このやり方では何か問題があるのでしょうか?
552 名前:551 mailto:sage [2009/11/01(日) 15:39:34 ] 一応自己解決しました 過去のスクリプトを見直していたところ matchで検索してからsubstringで抜き出していて 試したところうまくいきました どうも失礼しました
553 名前:デフォルトの名無しさん [2009/11/03(火) 13:13:35 ] おめでとう
554 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 01:43:16 ] ●正規表現の使用環境 秀丸 ●検索か置換か? 置換 ●説明 文字列Higを含むが、Highでない文字列を置換 ●対象データ Hig123 HigABC HighScore ●希望する結果 Hig123 ^^^ HigABC ^^^ HighScore お願いします。
555 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 01:52:43 ] マッチ部分はHigだけでいいの? Hig(?!h)
556 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 02:09:08 ] できました、ありがとうございます。 理解できないところがあるので、迷惑でなければ教えてください。 ?の効果は、直前のパターンが0回または1回です。 しかし、直前の文字は記号なのでエラーになるように見えます。 現に*や+ではエラーになります。 ?はどんな動作をしているのでしょうか?
557 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 02:22:40 ] >>555 のこと? (?!pettern)は否定先読みという構文で、その?とは異なる意味
558 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 02:27:13 ] 555のこと言ってるんなら?じゃなくて (?!expression) 後方不一致指定でしょ
559 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 02:29:26 ] 理解できました。 ありがとうございます。