2011-01-21 11 views
0

JavaScriptで、単語リストの末尾に「y」を付ける必要があります。正規表現を使用して文字列から単語を抽出します

コードは以下の通りです、

var str = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."; 

str.match(/(\w+)y\W/g); 

結果が配列そう

["simply ", "dummy ", "industry.", "industry'", "dummy ", "galley ", "only ", "essentially ", "recently "] 

で、私の質問は、 私は正規表現を使用して 'Y' 文字なしで単語のリストを取得することができています。 結果単語リストは

["simpl ", "dumm ", "industr.", "industr'", "dumm ", "galle ", "onl ", "essentiall", "recentl"] 

/(\w+)y\W/gが動作しない、このようにする必要があります。

+1

最後の質問を更新して、それを明確にして、別の**非常に似たようなものを投稿してはいけません。 –

答えて

4

あなたはlook-ahead assertionと呼ばれるものが必要です。(?=x)は、この試合の前の文字がxと一致しなければならないことを意味し、それらをキャプチャしません。

var trimmedWords = wordString.match(/\b\w+(?=y\b)/g); 
0

私はあなたが\b(\w)*y\bを探していると思います。 \ bは単語の区切り文字です。 \ wは任意の単語の文字にマッチし、yはその単語の終わりの文字を指定します。次に、あなたは\ wをつかんで、yを除外します。

* EDIT私はその半分を取り戻します。あなたが "industr"を探しているなら。 (期間を含めて)これは動作しません。私は周りに遊んで私が思い付くことができるものを見ていきます。ここで

1

はそれを行うための方法です:

var a = [], x; 
while (x = /(\w+)y\W/g.exec(str)) { 
    a.push(x[1]); 
} 

console.log(a); 
//logs 
["simpl", "dumm", "industr", "industr", "dumm", "galle", "onl", "essentiall", "recentl"] 
関連する問題