質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

5回答

3893閲覧

正規表現:URL最後の○○○.html部分だけ削除したい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2016/10/20 06:10

編集2016/10/20 06:24

以下のような文字列が合った場合、最後の○○○.html部分だけ削除したいです。
適切な正規表現があればお願いたします。

置換前 /aaa/bbb/ccc.html
置換後 /aaa/bbb/

追記
言語によって正規表現の書き方が違うのを知りませんでした。すみません。。。
使用言語はjavaScriptです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

言語によって正規表現の書き方が違うのを知りませんでした。

正規表現自体は、あまり違いはないです。大きく3種類、基本正規表現(一部のUnix/Linuxコマンド)、拡張正規表現(多くのツール)、Perl拡張正規表現(ここ20年くらいの言語の多く)。これらのどれかをベースにした細かいバリエーションもありますが。
今回だと、「削除したい文字列にマッチする正規表現」は、/[^\/]*\.html$/で、これはどの正規表現でも同じです。

正規表現は「文字列にマッチする」という機能しかないので、削除するとか、置換するなどは、正規表現の機能ではなくて、言語側の機能になります。
「削除したい」となった途端に、正規表現の世界から、プログラミング言語(やツール)の世界の話になります。なので、「どの言語(ツール)のことなのか?」が必要です。

JavaScript

1var a="/aaa/bbb/ccc.html"; 2var b=a.replace(/[^\/]*\.html$/,"");

投稿2016/10/20 06:50

編集2016/10/20 06:51
otn

総合スコア84712

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

/aaa/bbb/ccc.html
これは
/aaa/bbb/
こうしたいけど

/aaa/zzz/ccc.html
これはこのまま、と言う事ですか?

その場合は

/(\/aaa\/bbb\/).*\.html$/ ↑これでmatchさせて、↓これに変換 $1

/aaa/zzz/ccc.html
これも
/aaa/zzz/
とするという事であれば

/(.*/)[^\/]*\.html$/ ↑これでmatchさせて、↓これに変換 $1

投稿2016/10/20 06:24

編集2016/10/20 06:29
kunai

総合スコア5405

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2016/10/20 06:18

s.t.

総合スコア2021

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

言語が書いてないのでsedで書いてみました。

echo "/aaa/bbb/ccc.html " | sed -e "s/\(.*\/\)\(.*\)/\\1/"

投稿2016/10/20 06:18

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

正規表現は言語によって微妙に異なったりしますが。。。Rubyだと

ruby

1'/aaa/bbb/ccc.html'.sub(/[^\/]+\.html/, '') # > "/aaa/bbb/"

ですね。

regexp

1[^\/]+\.html

が最後の ccc.html の部分に match します。

投稿2016/10/20 06:15

編集2016/10/20 06:17
hana-da

総合スコア1728

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問