1

文字列の例を次に示します。

++++#foo+bar+baz++#yikes

そこから、または同様のシナリオからfooのみ抽出する必要があります。foo

+とは#、私が心配する必要がある唯一の文字です。

ただし、 の前にあるものに関係なく、foo削除または無視する必要があります。それ以降の他のすべても同様に必要です。

4

3 に答える 3

2

これを試して:

/\++#(\w+)/

捕獲グループ1をキャッチします。

于 2013-11-07T03:18:29.840 に答える
1

match()メソッドを使用するだけです。

var str = "++++#foo+bar+baz++#yikes";
var res = str.match(/\w+/g);

console.log(res[0]);  // foo
console.log(res);     // foo,bar,baz,yikes 

または使用exec

var str = "++++#foo+bar+baz++#yikes";
var match = /(\w+)/.exec(str);
alert(match[1]); // foo

修飾子 (グローバル) を使用execするgことは、すべてのサブマッチを取得するループで使用することを意図しています。

var str = "++++#foo+bar+baz++#yikes";
var re  = /\w+/g;
var match;

while (match = re.exec(str)) {
   // In array form, match is now your next match..
}
于 2013-11-07T03:25:54.930 に答える
1

foo を特定する上で、正確にどのような役割を果たしているのでしょうか+? 後に続き、終了する#文字列が必要な場合は、次のように簡単です。#+

var foostring = '++++#foo+bar+baz++#yikes';
var matches = (/\#([^+]+)\+/g).exec(foostring);
if (matches.length > 1) {
    // all the matches are found in elements 1 .. length - 1 of the matches array
    alert('found ' + matches[1] + '!'); // alerts 'found foo!'
}

より具体的に支援するために、データの可能なバリエーションと、長さや文字が異なる場合でも抽出したいトークンを識別する方法についての情報を提供してください.

+との任意の組み合わせが前後にあるテキストの最初のセグメントを探しているだけの場合は#、次を使用します。

var foostring = '++++#foo+bar+baz++#yikes';
var result = foostring.match(/[^+#]+/);
// will be the single-element array, ['foo'], or null.

と同等であるため、データによっては、使用\wが制限的すぎる場合があります[a-zA-z0-9_]。データには、句読点、ダッシュ、括弧、または一致に含めたいその他の文字が含まれていますか? 私が提案する否定文字クラスを使用すると、 aまたは aを含まないすべてのトークンがキャッチされます。+#

于 2013-11-07T03:37:57.880 に答える