perlである文の①先頭から指定された「単語数」分の単語を取得する、②最後から指定された「単語数」分の単語を取得する、③指定された「開始位置」から指定された「単語数」分の単語を取得するということがしたいです。できれば正規表現で

ちなみに分の途中にカンマやピリオドがある場合は最初にスペースと置換しておこうとおもっています。


単語数:3
開始位置:4

原文
The concept of language errors is a fuzzy one.
取得したい文字列
①先頭から指定された「単語数」分の単語を取得するの場合
The concept of
②最後から指定された「単語数」分の単語を取得する
a fuzzy one
③指定された「開始位置」から指定された「単語数」分の単語を取得する
language errors is


おしえてくださいよろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:Kiichigo No.1

回答回数84ベストアンサー獲得回数0

ポイント10pt

http://www.hatena.ne.jp/1101996039#

人力検索はてな - perlである文の①先頭から指定された「単語数」分の単語を取得する、②最後から指定された「単語数」分の単語を取得する、③指定された「開始位置」から指定された「単語数..

$t = ”The concept of language errors is a fuzzy one.”;

$n = 3;

$s = 4;

print ”1 $1¥n” if $t =~ /((¥S+¥s*){$n})/;

print ”2 $1¥n” if $t =~ /((¥S+¥s*){$n}$)/;

print ”3 $2¥n” if $t =~ /(¥S+¥s*){$n}((¥S+¥s*){$n})/;

id:amagami No.2

回答回数53ベストアンサー獲得回数0

ポイント10pt

このような感じでどうでしょう?

$word = ”The concept of language errors is a fuzzy one.”;

$start = 4;# 開始位置

$span = 3;# 単語数

#-- 1 --

$first = $word;

$first =~ /^((¥w*¥s){$span})/;

print $1, ”¥n”;

#-- 2 --

$end = $word;

$end =~ /((¥w*¥s?){$span})¥.$/;

print $1, ”¥n”;

#-- 3 --

$start--;# 開始位置は1減らしておく

$middle = $word;

$middle =~ /^(¥w*¥s){$start}((¥w*[¥s¥.]){$span})/;

print $2, ”¥n”;

id:kn1967 No.3

回答回数2915ベストアンサー獲得回数301

ポイント20pt

splitでアレイに格納すれば好きな部分だけ取り出せますよ。

id:akikosato

そうですね。でも具体的に知りたかったんです。できれば正規表現で

2004/12/03 00:52:23
id:GEN111 No.4

回答回数472ベストアンサー獲得回数58

ポイント30pt

# 単語にアポストロフィが含まれる場合は考慮していません。

my $str = ’The concept of language errors is a fuzzy one.’ ;

my $num = 3 ;

my $start = 4 ;

my $get1 = ($str =~ /^((¥w+(¥b|¥s)){$num})/)[0] ;

my $get2 = ($str =~ /((¥w+(¥b|¥s)){$num})(¥W)*$/)[0] ;

my $get3 = ($str =~ /^(?:(?:¥w+(?:¥b|¥s)){@{[$start-1]}})¥W+((¥w+(¥b|¥s)){$num})/)[0] ;

print <<”result” ;

$get1

$get2

$get3

result

exit ;

id:akikosato

できました ありがとうございました。

2004/12/03 01:14:24

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません