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

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

新規登録して質問してみよう
ただいま回答率
85.35%
正規表現

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

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

Q&A

解決済

3回答

923閲覧

正規表現を利用した置換について

masaki822

総合スコア5

正規表現

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

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

0グッド

0クリップ

投稿2020/10/28 08:44

編集2020/10/28 08:48

正規表現を利用した文字列の置換について

aaaaa-bbbbb-ccccc
ddddd-eee-ffff
ggggg-hhhh-iii

aaaaa-bbbbb
ddddd-eee
ggggg-hhhh
のように、2個目のハイフン以降を正規表現にて削除したいとき、
どのようにすればよいでしょうか。

現在

検索
(^([^,]+-){2})(.)*
置換
$1

で行ったところ2個目のハイフンが残ってしまいます。

非常鬼基本的なことでこのようなところで質問するようなことではないかもしれませんが、
どなたかご教授お願いいたします。

すみません知恵袋にも投稿してしまいました。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14233663219

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

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

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

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

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

yambejp

2020/10/29 02:48

プログラミング言語次第です なにを使うか提示してください (もしくは何かエディタ上でやるならそのエディタ名)
masaki822

2020/10/30 00:42

flexible renamer というファイル名変換ツールで使用します。
guest

回答3

0

正規表現で何かを削除するといったことはできません。
条件に合致した文字列を抽出するのが正規表現です。
*抽出した内容と置換処理を合わせて、削除と似た挙動をさせることは可能です。

ただ、本件は正規表現を使用必要がありません。
使用する言語によりますが、2個目のハイフンを検出して、そこまでの文字列を抽出するか、それ以降を削除するのが適切だと思います。

投稿2020/10/28 08:50

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2020/10/28 08:57

php であれば、 ・`-` で分割して、配列に突っ込み ・前 2 つのデータを `-` でつないで抽出 といった処理がよく見られます。
masaki822

2020/10/28 09:19

ありがとうございます!何とかやってみます!
guest

0

ベストアンサー

2個目の"-"が残るというこことですので、"()"で括る範囲を2個目の"-"の手前までにすれば良いのではないでしょうか。

text

1検索: 2(^[^,]+-[^,]+)-.* 3置換: 4$1

分かりやすくするため、余計な"()"は削除し、繰り返しの{2}をやめて、横に並べて、2個目の"-"手前で、")"を閉じています。

投稿2020/10/31 04:18

akiruno-oneone

総合スコア815

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

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

0

te2jiさんのお書きのように正規表現はマッチしか出来ません。置換は、言語やツールの機能です。
例えば、Linuxのgnu sedだと、「何番目にマッチした」という指定が出来るので、2を指定して、

sh

1sed 's/-[^-]*//2'

で2番目の-以降を削除できます(多分GNU拡張なのでMacなどでは駄目だと思います)。

普通のツールだと、

plain

1置換元: ^([^-]*(-[^-]*){1}).* 2置換先: $1

でしょうか。2組目の括弧と{1}は不要ですが、要件が「5番目の-」と変化したときにここの数字を変えると言う意味で付けました。

投稿2020/10/28 11:09

otn

総合スコア85901

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問