0

タイトルにあるように、連続する X 単語ごとに 1 つのランダムな単語を取得する正規表現または JavaScript を考え出す必要があります。

たとえば、私はこのテキストを持っています

「コンピューティングでは、正規表現は、特定の文字、単語、または文字のパターンなどのテキストの文字列を「一致」(指定して認識する) ための簡潔で柔軟な手段を提供します。「正規表現」の一般的な略語には、正規表現と正規表現が含まれます。 "

4 単語ごとに 1 単語を正規表現したいので、テキストの最初の 4 単語から「コンピューティングでは、通常の」1 つのランダムな単語を正規表現します。

ただし、テキスト全体に対してこれを行う必要があるため、上記の例では、4 つの単語の 9 つのグループがあります。各グループから 1 つのランダムな単語を正規表現したいと思います。うまくいけば、その正規表現をすばやく編集して、X 単語グループに対しても同じことができるようになることを願っています。X は任意の数です。

私はこれを行うことができるものを手に入れようと何度も試みましたが、うまくいきません(正規表現とJavaScriptの両方が初めてです)

javascript を使用してテキストを X グループの単語に分割できれば、後で各グループからランダムな単語を取得できると思います。

私がこれまでに持っているのはこれです:

var split='In computing, a regular expression provides a concise and flexible means to "match" (specify and recognize) strings of text, such as particular characters, words, or patterns of characters. Common abbreviations for "regular expression" include regex and regexp.'.match(/[^ ]+( +[^ ]+){0,3}/g); 

これにより、カンマ区切りでテキストが 4 つの単語のグループ (または 3 つのスペースごと) に分割されます。問題は、セパレータがコンマであるため、元のテキストのコンマも出力に表示されることです。

In computing, a regular,expression provides a concise,and flexible means to,"match" (specify and recognize),strings of text, such,as particular characters, words,,or patterns of characters.,Common abbreviations for "regular,expression" include regex and,regexp.

そのセパレーターをコンマ以外のものに変更する方法はありますか? 少なくともこの方法で、4 つの単語グループごとに使用できる正規表現を考え出すことができます。試合後にカンマを置き換えることも考えましたが、もちろん元のカンマもすべて置き換えられます。

ランダムな単語の正規表現または JavaScript をどのように実行するかはわかりませんが、グループを整理することが正しい方向への第一歩だと思いますか?

これについての助けやアドバイスをありがとう、本当に感謝しています。一部の人にとってこれが完全に簡単である場合は申し訳ありませんが、私はこれを行うのが初めてであり、実用的な解決策を考え出すために何時間も試みましたが、役に立ちませんでした.

ピーター

4

3 に答える 3

1

.match一致の配列を返します。次に、それらをスペースで分割し、各配列からランダムなものを取得します。

var text = '"In computing, a regular expression provides a concise and flexible means to "match" (specify and recognize) strings of text, such as particular characters, words, or patterns of characters. Common abbreviations for "regular expression" include regex and regexp."';
var groups = text.match( /[^ ]+( +[^ ]+){0,3}/g );
for( var i=0 ; i<groups.length ; i++ ) {
  var words = groups[i].split( ' ' );
  console.log( words[~~(Math.random()*words.length)] );
}

-

~~(Math.random()*words.length)0単語数 (4) - 1の整数を返します。

于 2012-09-04T15:08:30.053 に答える
1

http://jsfiddle.net/DqsQu/

var str = "In computing, a regular expression provides a concise and flexible means to \"match\" (specify and recognize) strings of text, such as particular characters, words, or patterns of characters. Common abbreviations for \"regular expression\" include regex and regexp.";

var words = str.match(/\w+/g);
for (var i=0; i< words.length; i+=4) {    
    var randNum = Math.floor(Math.random()*4) + i;
    if (words[randNum]){
        document.write(words[randNum] + "<br>");
    }
}
​

編集:

単語の最後の「グループ」に常に値があることを確認したい場合は、次のようにすることができます。

var words = str.match(/\w+/g);
for (var i=0; i< words.length; i+=4) {
    var maxRand = Math.min(4, words.length - i);
    var randNum = Math.floor(Math.random()*maxRand) + i;
    document.write(words[randNum] + "<br>");
}
​

したがって、「one two three four five six」というフレーズがある場合、最初の単語は最初の 4 つの単語からランダムな単語になり、2 番目のグループには単語「five」と「six」のみが含まれるため、ランダムな単語が得られます。それらの2つの単語の1つからの単語。

于 2012-09-04T15:17:46.193 に答える
1

正規表現はランダム化をサポートしていないため、ここでは役に立ちません。

ただし、String.split メソッドを使用して、テキストを個々の単語の配列に変換できます。次に、配列を 4 つのグループで反復処理し、各グループからランダムな単語を選択します。

Math.floor(Math.random() * 4) 

0 から 3 までのランダムな整数を返します。

于 2012-09-04T15:12:07.820 に答える