こんにちは
perlで特定の文字列からその後ろをすべて
削除したいのですが、うまくできなくて質問します。
Ex)123.12abc ⇒123.12
012.123abc ⇒012.123
123.1234|| ⇒123.1234
上記のようなデータの少数点までの数字の後ろにabc、||、半角、全角スペースなど文字列があります.
少数点までの数字の後ろの文字列すべてを削除したいですが、
特定の文字列からその後ろにある文字列全てを指定する方法(正規表現)はありませんでしょうか?
どうかご存知の方、教えてください!!
よろしくお願いいたします。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
小数点付きの数字のみにしたい時は…
正規表現を /(\d+\.\d+)/ として $1にアクセスすればよくて
↓さんぷるこーど。
===========================================
use strict;
use warnings;
while(<DATA>) {
chomp $_;
/(\d+\.\d+)/;
print "str:", $_, "\t-> ", $1 , "\n";
}
__DATA__
123.12abc
012.123abc
123.1234||
===========================================
整数のみも対応したければ
正規表現を /(\d+(\.\d+)?)/ として $1 にアクセスすればよいですね
↓さんぷるこーど。
===========================================
use strict;
use warnings;
while(<DATA>) {
chomp $_;
/(\d+(\.\d+)?)/;
print "str:", $_, "\t->",$1 , "\n";
}
__DATA__
123.12abc
012.123abc
123.1234||
===========================================
No.5
- 回答日時:
こういう事ですね?
『文字列の先頭に、小数点付数値と解釈できる内容が入っています。 数値の一部とみなせない後続文字を削除したいです。』
if( $text !~ s/(\.\d*).*$/$1/s ) {
die("入力がおかしいよ。\n");
}
print "$text を認識しました。\n";
# 小数点の無い整数には対応できません。
No.4
- 回答日時:
例の 'abc' はどこにいったんだろう.
さておき, いろんな方法があって
・s/\|\|.*//; でつぶす
・m/(\d+\.\d*)\|\|/; で取り出す
・(split(/\|\|/))[0] で「最初の項目」を取り出す
・+0 で強制的に数値に変換する
などは思い付く.
No.3
- 回答日時:
Tacosasさんがおっしゃっているように意味が分からないです。
最初では
>上記のようなデータの少数点までの数字の後ろにabc、||、半角、
>全角スペースなど文字列があります.
>少数点までの数字の後ろの文字列すべてを削除したいですが、
なので、文面から最初の小数点「 . 」以降を消したいと読めます。
が、 Tacosasさんへの補足では、
>'||'からその後ろまでを削除したいということです。
小数点は何処へ行ってしまったのでしょうか?
|| と それ以降を削除でしたら、
$data =~ /^(.+)?\|\|/; ではどうでしょう。
No.2
- 回答日時:
「少数点までの数字の後ろの文字列すべてを削除したい」って, 何がしたいのか理解できないんだけど.... 「少数点」は「小数点」のことだと思っていい?
でそうだとしても, 例えば一番上の 123.12abc の例だと, 「小数点までの数字」ってのは「123」だよね. 「その後ろの文字列すべてを削除」って言われても「1」より後ろなのか「2」より後ろなのか「3」より後ろなのかがわかんない. そして, 挙がっている例ではこのいずれでもない.
ということで, やりたいことを「正確に」書いてください.
この回答への補足
ごめんなさい。
質問がおかしかったです。
たとえば'123.1234||abcd'のような数値のあとに文字列がつく場合
'||abcd'を削除し、'123.1234'にしたいです。
数値の後に付く文字列は'||'のあとにくる文字列が'abcd'ではなく、
’edfg’’hijk’みたいに特定できないため、'||'からその後ろまでを
削除したいということです。
No.1
- 回答日時:
小数点の前が必ず数字のみという条件で、その中の小数点以降を全て削除なら、
$data = '123.1234|| ⇒123.1234';
$data =~ /^(\d+)?\./;
print $1;
で、どうでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Visual Basic(VBA) 指定した文字から指定した文字のスペースまでを削除するVBAの構文について 6 2022/07/24 22:20
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- その他(プログラミング・Web制作) 2つのテキストファイルを比べて文字列を特定する方法を教えて下さい 5 2022/05/01 15:22
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- C言語・C++・C# C言語の質問です、プログラミング初心者です このような文字列があった場合 "abcdef☆ghijk 4 2022/11/22 10:56
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
女性に質問です、おっぱいって...
-
Excelの関数で もしA1よりB1が...
-
チラチラ見てくる男子の心理教...
-
女子を車に乗せる時最初は後部...
-
人混みなどで女性の後ろを歩く...
-
以下の行動をする男性の心理
-
彼とやる時に、後ろから突かれ...
-
男の運転するバイクの後ろに乗...
-
人の後ろを歩いていると警戒さ...
-
ATMの順番を待つ人に不快感
-
男子のガン見はどんな意味があ...
-
彼女や女性の斜め後ろを歩く男...
-
後ろからの気配や視線について
-
地味に困っています。
-
後ろに立たれるとそわそわする...
-
中1です。おねショタを実現し...
-
ガソリンスタンドが混んでる時...
-
なぜケツに魅力を感じるのです...
-
女性から見て、男性が髪を結ぶ事は
-
車で女子を迎えに行く時、助手...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
女性に質問です、おっぱいって...
-
Excelの関数で もしA1よりB1が...
-
人混みなどで女性の後ろを歩く...
-
男の運転するバイクの後ろに乗...
-
なぜケツに魅力を感じるのです...
-
地味に困っています。
-
チラチラ見てくる男子の心理教...
-
彼女や女性の斜め後ろを歩く男...
-
以下の行動をする男性の心理
-
デート場所
-
女子を車に乗せる時最初は後部...
-
ヒヤリ・ハットな出来事をいつ...
-
人の後ろを歩いていると警戒さ...
-
彼とやる時に、後ろから突かれ...
-
並んでいるとすぐ抜かされます
-
彼女とデート中、常に彼女の後...
-
男の人の車に乗せてもらう時
-
男子のガン見はどんな意味があ...
-
人が(自分が)作業してる最中...
-
後ろからの気配や視線について
おすすめ情報