WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:javascript の終了タグにマッチさせたい

0:[投稿] yuki [2003/02/12 14:43 ][環境:win2000 UNIX]

下の3パターンについて

(パターン1)
//--></script>

(パターン2)
//-->
</script>

(パターン3)
//-->
が無く、かつ
</script>
のみ存在する場合

マッチを行いたいのですが、
・改行は無視 m演算子
・大文字小文字も無視  i演算子

という条件を付け加えてマッチさせたいのです。
//--> があれば //--> が存在する方にマッチさせたいのですが、
その場合に下のように書いたのですが

$data =~ #(//--></script>|</script>)#mi;

どこが間違っているのでしょうか?


1:[回答] gun [2003/02/13 10:40 ]

下記の様にした方が良いのでは?

$data=~ /(\/\/--><\/script>|\/\/-->\n<\/script>|<\/script>)/i;


2:[回答] 匿名万歳 [2003/02/13 17:39 ]

$data =~ m#(//--></script>|</script>)#mi;
ですね。

"/"を使わないときは、最初の"m"が省略できないと思います。
正規表現としては
$data =~ m#(//-->)?</script>#mi;
の方が簡潔ですが、試してないので無理かもです。


3:[回答] 匿名万歳 [2003/02/14 09:37 ]

少し試してみましたが、m修飾子の効果がいまいちわかりませんでした。

結果的に3パターンにマッチする正規表現は
$data =~ m#(//-->\n?)?</script>#i;
こんな感じだと思います。


4:[質問] yuki [2003/02/16 17:04 ]

やはり m修飾子の効果はわからないですか。

私もイマイチわからないのでどなたか原因を教えてくださる方、
教えてください。

> "/"を使わないときは、最初の"m"が省略できないと思います。

その通りでした。
ご指摘どうもありがとうございます。


5:[回答] B-Cus [2003/02/17 01:45 ]

m 修飾子に

> ・改行は無視 m演算子

という効果はありません。マニュアルに書いてある通り、
^ と $ の挙動を変えるものです。

正規表現中に ^ も $ も使っていない場合は、付けても
付けなくても同じです。


6:[完了] yuki [2003/02/21 23:46 ]

そういう意味だったのですね。ありがとうございます。
よくマニュアルを読まないといけませんね。

どうもすいませんでした。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World