2012-02-29 4 views
1

正規表現を使用して、最初の文字以外のすべての単語をすべて選択しようとしています(much as @mahdaeng wanted to do here)。彼の質問に答えた答えは\B[a-z]でした。これは、「ジャック」や「メリーゴーランド」などの単語に句読点が含まれている場合を除いて、正常に動作します。含まれている句読点を含めて単語全体を選択する方法はありますか? (「?。」などのように外部の句読点を含めません)「ジャック」や「メリーゴーランド」などの単語を含め、最初の文字を除く単語全体を選択する正規表現

答えて

2

あなたは許容でワード、句読点を列挙することができる場合、あなたはちょうどあなたがリンクされ解答時に拡張することができます:本当に

\B[a-zA-Z'-]+ 
+0

正確に何が必要なのですか。ありがとう! –

3

正規表現をスペースにあなたの言葉だけsplitとそれに応じて各単語を扱うことができるので、ここでは必要ありません。あなたが基本となる言語を言及していないので、ここではPerlで実装だ:

use strict; 
use warnings; 

$_="Jack's merry-go-round revolves way too fast!"; 
my @words=split /\s+/; 
foreach my $word(@words) 
{ 
    my $stripped_word=substr($word,1); 
    $stripped_word=~s/[^a-z]$//i; #stripping out end punctuation 
    print "$stripped_word\n"; 
} 

出力は次のとおりです。

ack's 
erry-go-round 
evolves 
ay 
oo 
ast 
+0

すばらしいアプローチ!残念ながら、私は実際にInDesignのgrepスタイルを使用しているので、実際にこのメソッドを使用することはできません。 –

1
\B[^\s]+ 

^\sは「空白ではない」を意味する)あなたに何を取得する必要があります単語が空白で区切られていると仮定します。句読点区切り記号も使用している場合は、句読点を列挙する必要があります。

\B[^\s,.?!]+ 
+0

うわー!それは素晴らしいです!私はこの方法を覚えておく必要があります。しかし、私の場合は、そうではないものの代わりに許可されているものを描写するのにおそらく毛がかわいらないと思う。 –

関連する問題