正規表現 Part6 ..
[2ch|▼Menu]
634:628
09/11/29 21:36:03
皆さん、ご返答ありがとうございました

635:デフォルトの名無しさん
09/11/30 15:26:13
大量のエロデータとかダウンロードとかそんな興味ないわw

636:デフォルトの名無しさん
09/11/30 15:37:50
実用的にはふくろうもいいけど、オートマトンや言語理論の勉強して
基礎を理解しておくと数学的に無理なことをやろうとしたりとか無駄に
悩まなくてよくなるのでお勧め。

637:デフォルトの名無しさん
09/11/30 16:21:11
実装してみたけど、NFAからDFAへの変換で躓いた俺が通りますよ。

638:デフォルトの名無しさん
09/12/02 06:48:07
「^\w+$」 から 「^_+$」 だけ除外して検索したいのですが、下のような記述でよいでしょうか?
自信がないのでお願いします。たぶん Perl です。

^\w*[a-zA-Z0-9]\w*$

639:デフォルトの名無しさん
09/12/02 08:20:42
Perlだとしたら違うが、Perlじゃないとしても違う

640:デフォルトの名無しさん
09/12/02 09:19:26
>>638
そもそも\wは[a-zA-Z0-9_]じゃないんだが

641:デフォルトの名無しさん
09/12/02 11:35:49
>>638-639
○ 1行内に、1文字以上の、空白を含まない英数単語のみ ^[0-9A-Za-z_]+$ であればマッチする、
○ 但しアンダーラインのみ ^_+$ の連続は単語ではない。
正規表現はPerlの機能の一部として含まれる。すなわち、Perlには正規表現の機能が入っている。
正規表現で出来なくてもPerlなら出来る。

642:デフォルトの名無しさん
09/12/02 12:35:03
perlです。
$str="aa(bb)cc";
$ptn="aa(bb)cc";
のとき、
$str=~/$ptn/;
みたいな書き方でマッチさせたいんですが括弧が邪魔して無理でした。
$strと$ptnの内容は上記のままで、正規表現でマッチさせるにはどう書けば良いのでしょうか?

643:デフォルトの名無しさん
09/12/02 12:40:54
>>642
そういうのはperlのスレで聞けよ。

$quoted_ptn = quotometa($ptn);
$str =~ /$quoted_ptn/

または

$str =~ /\Q$ptn\E/

644:デフォルトの名無しさん
09/12/02 12:42:56
ごめんtypoしてるわ。

quotemetaが正解

645:デフォルトの名無しさん
09/12/02 12:51:49
>>643
いけました。
どうもすいませんでした。
そして、ありがとうございました。


646:427
09/12/03 21:59:36
前方一致(前方参照)について教えてください。

●正規表現の使用環境
秀丸7.11 HMJRE.DLL1.92

●検索か置換か?
検索

●説明
改行(空行)に挟まれたaだけを検索したい

●対象データ


a

a
a


●希望する結果


a ←これだけマッチしてほしい

a
a


647:デフォルトの名無しさん
09/12/03 22:00:06
以下を試しましたがダメでした。
(?<=\n\n)a(?=\n\n)
(?<=^$)a(?=\n\n)

バラして試したところ、どうも後方一致で改行は認識してくれるみたいですが、前方一致では改行はダメのようです。
(?<=\n\n)a ←ダメ
(?<=\n)a ←ダメ
a(?=\n\n) ←OK

そこで知りたいのは、
前方一致で改行を使えないのは仕様でそうなっているからでしょうか?そうした記載を見つけることが出来ませんでした。
また改行(空行)に挟まれた文字を検索する方法がありましたらぜひお教えください。

648:デフォルトの名無しさん
09/12/03 22:22:43
>>647
前方一致って look-behind のこと指して言ってんの?
それはともかく、秀丸は改行絡みの扱いが弱いから制限事項でない?



649:デフォルトの名無しさん
09/12/03 22:33:51
>>646
マッチして欲しいaが空行に挟まれてないじゃん

650:デフォルトの名無しさん
09/12/03 23:42:48
秀丸v8β28なら (?#fulllinematch)\n(a)\n\n(?\1) でできるみたい

前方一致は秀丸で使われている独自用語。一般用語では648のとおり。




651:デフォルトの名無しさん
09/12/03 23:50:50
"(a b)(c d e)"
こういう文字列を
(a b)と(c d e)に分割する事って出来ませんか? 出来ればrubyでお願いします

652:650
09/12/03 23:52:40
おっと間違えた。
(?#fulllinematch)\n\n(a)\n\n(?\1) だ

653:デフォルトの名無しさん
09/12/04 00:46:20
r = /(\(+)
([^\(]+)
(\)+)
/x

"(a b)(c d e)" .scan(r).map do |m|
puts m.to_s
end


654:デフォルトの名無しさん
09/12/04 00:51:04
ありがとうございます
追加で悪いんですが・・・
"(a b)(c (d e))" もし、こういうネスト構文になった場合
正規表現での分割は無理でしょうか?
(a b)
(c (d e))

655:デフォルトの名無しさん
09/12/04 02:39:38
>>654
全ての場合に対応するのは無理

656:646
09/12/04 07:03:25
>>650
ありがとうございました。
なんか最新βからfulllinematchなるものが使えるようになったみたいですね。
実にタイムリーでした。
おまけに (?<=\n\n)a を実行すると「前方一致では改行文字は使えません」なメッセージも表示するようになっていました。
で、「前方一致」って秀丸独自だったんですね。以後注意します。


657:デフォルトの名無しさん
09/12/04 20:12:15
>>653
を少し改良してみて
p "(a b)(c d e)test".scan(/(\([^\(]*\))/)
こうなったんですが
何故^\(を[]で囲わなきゃいけないんでしょうか?

↓のようにかいても意味は同じだと思うんですが動かないんです。かき方が違うんでしょうか?
p "(a b)(c d e)test".scan(/(\(^\(*\))/)
p "(a b)(c d e)test".scan(/(\(.*\))/)

658:デフォルトの名無しさん
09/12/04 20:24:08
正規表現では、[]で囲まれると、他の部分と意味が変わって、
たとえば [^\(] の場合、( 以外の任意の一文字、という意味になる。

659:デフォルトの名無しさん
09/12/04 20:34:02
>>658
^この否定は[]の中でしか使えないんですかね
(a b)と(c d e)に分割するには/(\([^\(]*\))/これが最小コードとなるんでしょうか?

あと>>653さんのかいた//x のxの意味もよくわからず消してしまったんですが、xをつけると何が変わるんでしょう?

660:デフォルトの名無しさん
09/12/04 21:00:25
>>658
[]の中の(はエスケープいらんだろう。

>>659
オマエはマニュアル読むって頭を持ってないのか?


661:デフォルトの名無しさん
09/12/04 21:20:50
>>660
だって、早く簡単にわかるならそのほうがいいじゃないですか。


662:デフォルトの名無しさん
09/12/04 23:11:59
うわぁぁぁ

663:デフォルトの名無しさん
09/12/04 23:52:52
>>660
//xについての記述はぐぐりにくいので見つけられなかったです

664:デフォルトの名無しさん
09/12/05 00:03:30


       | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
       |                    |
       |                    |
       /    ̄ ̄ ̄ ̄      /
       /  ぶち殺すぞ     /
     /              /
     /              /
    /   ____     /
   /             /
 /             /


665:デフォルトの名無しさん
09/12/05 00:05:30
確かに調べるのめんどくさいんですが、
2chはいつから喰わず嫌いをはじめたのか、質問したい

次の方どうぞ

666:デフォルトの名無しさん
09/12/05 11:36:21
釣りはいいから。獣の数字げっと

667:デフォルトの名無しさん
09/12/05 12:02:56
鬼車でひいひいいわせてやるよ

668:デフォルトの名無しさん
09/12/11 15:49:19
諸君、進んでおるかね?

669:デフォルトの名無しさん
09/12/15 18:46:12
●正規表現の使用環境
otbedit(URLリンク(www.hi-ho.ne.jp))というエディタです。
(emEditorでは行をまたいだ置換がうまくいかずotbeditに変えました。使えればソフトにはこだわりません)
Perl互換の拡張正規表現が使えるとのことですが、詳しい説明が書いておらずわかりませんでした。

●検索か置換か?
置換

●説明
特定の文字列の間にある空でない文字列の最後に任意の文字列を加えること
(例では@Bと@Aの間にある空でない文字列の最後にaを付け加えたい。できればそれから@Aと@Bは除外したい)
【@B(.|[\r\n])*?@A】で全体から特定の範囲を指定した後で
【[^\n]+$】→【$&a】の置換の繰り返しで可能ではありましたが、数が多いのでできれば一括で置換したいです。

●対象データ

@A
あいうえお
@B
かき

っくけこ
さしす
@A
せそたち
つてと
@B
なにぬね
のは
@A
ひふへほ

670:デフォルトの名無しさん
09/12/15 18:49:00
●希望する結果

@A
あいうえお
@Ba
かきa

っくけこa
さしすa
@Aa
せそたち
つてと
@Ba
なにぬねa
のはa
@Aa
ひふへほ




↑できれば@Aや@Bにaをつけたくはありません

671:デフォルトの名無しさん
09/12/16 04:39:29
ゼロ幅アサーション

672:デフォルトの名無しさん
09/12/21 01:54:38
誰かCで正規表現できるクラス作れよ
BOOST使いづらすぎる

673:デフォルトの名無しさん
09/12/21 02:34:55
CじゃなくてC++です

674:デフォルトの名無しさん
09/12/21 04:07:23
Boost Regex++じゃ駄目なのか

675:デフォルトの名無しさん
09/12/21 14:59:11
Boost使いづらいです・・・

676:デフォルトの名無しさん
09/12/21 15:27:52
xpressiveもだめ?

677:デフォルトの名無しさん
09/12/21 17:04:49
今出先なので、帰ったら見てみます

678:デフォルトの名無しさん
09/12/22 18:28:13
鬼車ってどうなんでしょうか?

679:デフォルトの名無しさん
09/12/22 19:27:41
どうって?

680:デフォルトの名無しさん
09/12/22 22:41:42
性能?

681:デフォルトの名無しさん
09/12/22 23:06:52
鬼車って確か検索機能しかないよね(置換機能が無い)
置換を自力で実装するの面倒なんで代わりにbregonig.dllとか使うんだけど
文字コードsjisしか使えなくて勿体無いあああってなる

682:デフォルトの名無しさん
09/12/25 19:56:08
●正規表現の使用環境
perl5.8.7 CentOS 5.3
文字コードはEUCです。

●検索か置換か?
置換

●説明
全銀テレ為替文字対応のため、数字、大文字英字、半角カナ・濁点、一部半角記号記号のみの文字列に
変換したいのです。
可能文字はこちら
URLリンク(www.kyodocms.jp)

これら以外の文字を半角スペースに置き換えたいのです。

●対象データ

任意の文字列です。

1.ひらがな→カタカナ変換
2.全角→半角変換
3.英小文字→英大文字変換
4.ァィゥェォッャュョをアイウエオツヤユヨに変換

ここまで出来てて、入力可能文字以外をスペースに置き換えたいんですが、上手くいきません。
どうすればいいでしょうか?


683:デフォルトの名無しさん
09/12/25 20:29:25
[^0-9A-Zアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン゛°\\,\.「」\(\)\-\/]


に置換
あってるかどうかは試してないけどこういうこと?

684:デフォルトの名無しさん
09/12/25 22:49:43
>>683
レスどうもです。そのとおりです。
>>682の条件を変数$regExpに代入し、

$result = 'パ-カ-ヲ買ツタ01234567';
$result =~ s/$regExp/ /g;

とすると、漢字だった部分が文字化けし、「パ-カ-ヲ ・糟・1234567」となってしまいます。
結果は「パ-カ-ヲ ツタ1234567」にしたいのです。


685:デフォルトの名無しさん
09/12/26 00:05:51
未定義領域含んでるんじゃね?
文字の正規表現
URLリンク(www.din.or.jp)

686:デフォルトの名無しさん
09/12/26 00:26:46
質問があります。
<div id=・・・>←1
   <div id=・・・>
   </div>←2
   <div id=・・・>
   </div>←3
</div>←4
抜き出したいのは1から4全体なんですけど
"<div id=・・・(.+?)</div>
で非欲張り系で抜き出すと1から2までヒットします。
1から4全体を抜き出す方法ていうのはないのでしょうか?
XML形式ならいけるぽいのですが・・・
無理なのでしょうか?



687:デフォルトの名無しさん
09/12/26 01:52:00
対応するタグという意味なら田中スペシャルが使えればできる。

688:デフォルトの名無しさん
09/12/26 08:16:39
ていうか素直にXMLパーサ使え

689:デフォルトの名無しさん
09/12/26 12:19:49
HTMLの処理には正規表現ではなくHTMLパーザを、XMLの処理にはXMLパーザを。

テンプレに入れてもいいレベルのFAQ。


690:デフォルトの名無しさん
09/12/27 02:55:21
わかりました。パーサを調べてみます

691:デフォルトの名無しさん
09/12/28 18:29:47
文字列を分割するとき、特定の文字で囲われているものは除外するっていう方法ありますか?
phpなんですけど
preg_splitで例えば
A,B,C,'D,E',F

[0]=A
[1]=B
[2]=C
[3]=D,E
[4]=F

上記のように分割できますか?

692:デフォルトの名無しさん
09/12/28 18:34:35
普通にCSVのモジュール使えばいいのでは

693:デフォルトの名無しさん
09/12/28 19:36:26
>>691
詳説 正規表現 にCSV処理のサンプルあるよ。オヌヌメ

694:デフォルトの名無しさん
09/12/30 15:29:52
●正規表現の使用環境
Java1.5(Firefox 3.0.16)

●検索か置換か?
検索

●説明
\.nas(3|5)\d+\.[a-z\-]+\.nttpc.ne.jpという文字列を検索したいです。
※検索対象の文字列自体が正規表現のようになっています。

●対象データ
\.nas(3|5)\d+\.[a-z\-]+\.nttpc.ne.jp

●希望する結果
\.nas(3|5)\d+\.[a-z\-]+\.nttpc.ne.jp
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
※完全一致


自分なりに\を付けたりして試してみたのですが出来ませんでした。
以上、どうかよろしくお願いします。

695:デフォルトの名無しさん
09/12/30 17:02:17
文字列定数内の \ 自体を \\ とするエスケープまで含めて
"\\\\\\.nas\\(3\\|5\\)\\\\d\\+\\\\\\.\\[a\\-z\\\\\\-\\]\\+\\\\\\.nttpc\\.ne\\.jp"
となる

696:デフォルトの名無しさん
09/12/31 10:01:19
>>695
694です。
どうもありがとうございました。
すごく長い表現になっちゃうんですね。(汗


697:デフォルトの名無しさん
09/12/31 15:49:42
こんにちは。
度々すみませんが、よろしくお願いします。

●正規表現の使用環境
Java1.5(Firefox 3.0.16)
●検索か置換か?
検索
●説明
#ipbf\d+souka.saitama.ocn.ne.jp という文字列を検索したいです。
//マッチする
var body = document.body.innerHTML;
var temp1;
temp1 = new RegExp(/#ipbf\\d\+souka.saitama.ocn.ne.jp/);
alert(temp1.test(body));
//マッチしない
var body = document.body.innerHTML;
var word = new Array();
var temp2;
word.push('#ipbf\\d\+souka.saitama.ocn.ne.jp');
for (var i = 0; i < (word.length); i++)
{
 temp2 = new RegExp(word[i]);
 alert(temp2.test(body));
}
●対象データ
#ipbf\d+souka.saitama.ocn.ne.jp
●希望する結果(※完全一致)
#ipbf\d+souka.saitama.ocn.ne.jp
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
「//マッチしない」方の配列内容を変えずに(\を追加せずに)一致させたいです。

以上どうか、よろしくお願いします。

698:デフォルトの名無しさん
09/12/31 16:25:29
Pattern.quote 使えばできるんでない?

699:デフォルトの名無しさん
09/12/31 22:01:43
>>697
word.push(/#ipbf\\d\+souka.saitama.ocn.ne.jp/);

700:デフォルトの名無しさん
09/12/31 22:38:39
>Java1.5(Firefox 3.0.16)
JavaじゃなくてJavaScriptでしょ?それなら>>695は正規表現リテラルでこう書ける
/\\\.nas\(3\|5\)\\d\+\\\.\[a\-z\\\-\]\+\\\.nttpc\.ne\.jp/

701:デフォルトの名無しさん
10/01/02 16:48:00
>>698
>>699
>>700
返事が遅くなりすみません。
レスありがとうございます。
体調が悪くまだよく試していないのですが、まずはお礼だけで失礼します。

702:デフォルトの名無しさん
10/01/03 22:07:34
JavaとJavaScriptが区別できない人っていまだにいるのか…

703:デフォルトの名無しさん
10/01/03 23:16:48
VBとVBAの違いもな。
説明するの大変なんだよな・・・。

704:デフォルトの名無しさん
10/01/03 23:32:15
VBとVBAの違いなんて知らない奴たくさんいるだろ
VB触ってるのは底辺だけなんだから

705:デフォルトの名無しさん
10/01/03 23:55:38
ゲーム機は全て「ファミコン」だ。

706:デフォルトの名無しさん
10/01/04 01:36:20
ファミコンって何だ?
ピコピコのことか?

707:デフォルトの名無しさん
10/01/04 13:05:34
ピコピコはゲームウォッチ系じゃねーの?

知人が20万円ほど出してPC-98を買ったら
姉に「たっかいファミコンやなぁ」と言われたらしい。


708:デフォルトの名無しさん
10/01/05 12:45:41
●正規表現の使用環境
Java1.5
●検索か置換か?
検索
●説明
123456700 とか12345678-00など
7桁から10桁の数字にあと2桁の数字がハイフンもしくは連続して付属する数列の検索。
数列の直前にCodeまたはInvoiceがついてたら除外する。
Invoice 12345678-00 はマッチしないけどaccess# 12345678-00 はマッチする。
"On Invoice 123446789, your order was placed. However, please be sure to note that your account number 789456123 is suspended until further notice."
最初の番号Invoice 123446789は無視するけどaccount number 789456123はマッチするようにしたい。

●対象データ
Invoice 123446789
word 454545454
454545454545
Code: 4085432259
passcode 6789012 06
number 8901234 08
word 454545454 word

●希望する結果
マッチしない
Invoice 123446789
Code: 4085432259
passcode 6789012 06
Code 7890123-07

^(?!(Code|Invoice).)([^=\/%(.]\b\d{7,10}((\d?\d?)|(-\d\d))?\b)
自分でここまでやったけどうまく動かないです。
よろしくお願いいたします。

709:デフォルトの名無しさん
10/01/05 13:09:16
javaならプログラム書けるんだからInvoice,Codeのことはとりあえず
忘れてマッチさせて、そのあとでマッチ位置からさかのぼってCode,
Invoiceがないことを確認する方がたぶん楽だと思うよ。

710:デフォルトの名無しさん
10/01/05 13:09:29
javaならプログラム書けるんだからInvoice,Codeのことはとりあえず
忘れてマッチさせて、そのあとでマッチ位置からさかのぼってCode,
Invoiceがないことを確認する方がたぶん楽だと思うよ。

711:デフォルトの名無しさん
10/01/05 13:10:13
すまん2つ出た

712:デフォルトの名無しさん
10/01/05 14:16:10
ありがとうございます。実際にはJAVAで作成しているわけではなく、アプリケーションがJAVAとおなじ正規表現を使用している環境なので、プログラムを書くことはできないんです。それでここでアドバイスがいただければと思いまして、

713:デフォルトの名無しさん
10/01/05 14:30:07
look-ahead(?!...)じゃなくてlook-behind(?<!...)を使うとこだね。

そしてlook-behindはたいていある決まった長さのの文字列に
マッチするパターンがしか使えないので、

(?<!Invoice: )(?<!Invoice )(?<!Code: )(?<!Code )

のように並べて使うことになるだろう。

必要な仕様がきちんと書かれてないのでこれだというのは
示せないけどがんばれ。

714:デフォルトの名無しさん
10/01/05 14:51:49
●正規表現の使用環境
VB.NET

●検索か置換か?
検索

●説明
タブを含む何かの文字列の複数行を表す方法を教えて

●対象データ
AAAA
TAB TAB hogehoge改行
あああああ
TABT ABT AB hogehoge改行
TAB TAB hogehoge改行
ZZZZ

●希望する結果
あああああ

Regex("AAAA\n([\t.]+?\n)+(?<1>.+?\n)([\t.]+?\n)+ZZZZ",MultiLine)

上のように書いてみましたがだめでした。
AAAA改行とZZZZの間の文字列をターゲットにしつつ
その中にタブか何かの文字の組み合わせの文字列が1つ以上あって、行末に改行がある
という行がいくつかある。
ということを書いたつもりなのですが間違っているところを教えて頂きたいです。


715:デフォルトの名無しさん
10/01/05 15:06:04
[\t.]だとタブまたは任意の文字なので結局[\t.]+?は.+?と書いたのと同じ。
また、〜+?とは普通書かないね。〜*と同じなので。

\tが少なくとも一つ含まれた行にマッチさせたいなら、

.*\t.*\n

716:デフォルトの名無しさん
10/01/05 15:09:31
いや+?は最短マッチだろ。

717:デフォルトの名無しさん
10/01/05 15:12:27
Multilineなら\nは.に含まれないので、.+?\nと書いても結局.*\nと
同じになるっていいたいんじゃねーの?

718:デフォルトの名無しさん
10/01/05 15:48:20
それをいうなら.+じゃないか

719:デフォルトの名無しさん
10/01/05 16:31:59
前にも .+? と .* が等価だと思ってる人がいたような。
\d? とかの ? と同じものに見えてるのかな。

720:デフォルトの名無しさん
10/01/05 22:00:58
>>715
[\t.] ってブラケットの中にはいってんのなら'.'は単なるピリオドでしょ。


721:デフォルトの名無しさん
10/01/10 22:09:28
Javascriptを勉強中です。といっても、ブックマークレット程度しかやってませんが。
正規表現を練っていたときに、もうかなり以前のブラウザから最短一致(ものぐさ/non-greedy/非貪欲)が
使えるようになっていたことを知り、いま必要というわけではないのですが、詳しく調べてました。

{n,m}? {n,}? *? +? ?? ←これらについては自習して使い方を理解したのですが、{n}? が解りません。
どう考えても {n} と {n}? は同じ結果になるように思えるのです。
正規表現のリファレンスや正規表現を解説しているサイトは数多く見ましたが、量指定子の直後に?を付けた
{n}? を紹介はしていても、その使い方を例示したものを見つけることが出来ませんでした。
どなたか解説していただければ幸いです。よろしくお願いします。

  記号関係はGoogleでも検索しづらいので、なかなか見つかりません。Googleの弱点ですね。

722:デフォルトの名無しさん
10/01/10 22:36:48
googleに頼り切ってるヤツの弱点に見えるけどなぁ

URLリンク(www.kt.rim.or.jp)
>a{n}? = ちょうどn回の繰り返しにマッチします。ちょうどn回なので、a{n}と等価であり、一貫性のためだけに存在します。

要するに/x{1}/の意味を問うているようなもん

723:デフォルトの名無しさん
10/01/11 12:53:43
>>722
的確な回答ありがとうございます。

>googleに頼り切ってるヤツの弱点に見えるけどなぁ
検索ばかりしてるんじゃなく良書を得てそれで勉強せよ、またはGoogleに頼り切ってると
目が節穴になるぞ、というお叱りと理解いたしました。

☆perlretut - Perl の正規表現のチュートリアル
URLリンク(www.kt.rim.or.jp)
これは>>2の一番最初、「正規表現メモ」のページにある一番最初のリンクですね。
答えへの近道はGoogleでなく、このスレにあったようで…目が節穴でした。
このチュートリアルはとても解説が丁寧で、まさしく良書だと思います。これで勉強します。

結論としては /x{n}/ と /x{n}?/ は同じ結果なので、通常 {n}? は使用されない、ですね。

やはりPerlだと細かい情報もしっかりあってスゴイです。
これからは正規表現で悩んだらこのスレとPerlの周辺を当たってみようと思います。

724:デフォルトの名無しさん
10/01/11 15:57:50
>>723
それ、Perlのマニュアルなんだよ。UNIX系のシステムだったら
man perlretut を実行すると表示されるよ。

ウェブを見るより先にマニュアルを読めってことで。



725:デフォルトの名無しさん
10/01/11 16:31:29
.NET のマニュアルにも {n}? は {n} と等価って書いてあるな。
なんか訳が微妙におかしいけど。

URLリンク(msdn.microsoft.com)(VS.80).aspx

726:723
10/01/12 22:05:22
>>724
UNIX系とは縁がありませんが、perlre/perlretutはWeb上にあるので、それをmanの代わりにします。
Javascriptで使える表現かどうかは、以下を見てチェック。
☆RegExp - Core JavaScript 1.5 Reference - Mozilla Developer Center
URLリンク(developer.mozilla.org)
出来るだけ大本の公式情報を参照すべし、ですね。

>>725
情報ありがとうございます。間違ってはいませんが、確かに変ですねぇ。

perlretut、面白いですね−。塩基配列のストップコドンのとことか。
自習してみて、チュートリアルと同じ結果になるのを確認したのはいいのですが…
Javascript:var R=/(\w\w\w)*?TGA/g, S='ATCGTTGAATGCAAATGACATGAC', A = [], I = 0; while(R.test(S)) {A[I] = RegExp.lastMatch + ' (' + RegExp.lastParen + ') Pos=' + R.lastIndex; ++I;} alert(A.join('\n\n'));
なぜずれるのか、理解できず…。その後バックトラックの動作を知り、単に「必ず3文字ずつ進む」と
思い込んでただけだと気付きました。。。マッチにトライして失敗したらそこで終わりではなく、
開始位置を1文字進めるんですね。筆者が仕掛けた罠に見事にハマりました。。。
というか、こういう処理は素直に3文字ずつ取り出して判定すべきですよね。
なお、Javascriptには\Gなんてありませんでした。残念!

727:デフォルトの名無しさん
10/01/13 21:03:05
>726
man じゃなくても perldoc perlretut でいけるよ。

728:デフォルトの名無しさん
10/01/15 16:56:04
>>725
MSDNライブラリは機械翻訳だからしかたないべ


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5390日前に更新/175 KB
担当:undef