2017-07-12 9 views
2

を使用して、特定の出発点(ワード)の後に複数回に言葉を一致させるために、私はfromHere文字列の後に...すべてoption1, option2などを選択したいのですが、私は最後に出現を選択するまで終了しています(option4どのように正規表現

regex101

そしてここ

正規表現の例である:/(?=fromHere(.+((option\d))))/g

テキスト:

は、
Ok ignoring this whole line option1 ignore 


    fromHere I want to match all option1 ignore option2 ignore option3 xxxx 
option4 but got only the last one (4) 

解決策が見つかりませんでした。

答えて

2

あなたは、文字列で"optionN"に一致するようにRegExp/option\d/gと配列のインデックス1String.prototype.match()を取得するには、配列、Array.prototype.pop()を結果から"fromHere"を取り除くスプリット文字列にRegExp/fromHereString.prototype.split()を使用することができます。

let str = ` Ok ignoring this whole line option1 ignore 
 

 

 
    fromHere I want to match all option1 ignore option2 ignore option3 xxxx 
 
option4 but got only the last one (4)`; 
 

 
let res = str.split(/fromHere/).pop().match(/option\d/g); 
 

 
console.log(res);

+0

guest271314 @おかげで、私の目標は、ユーザーはので、私は、文字列をトリミングすることはできません入力している間、テキストをハイライト表示することでした。ここで興味深いのは、先読み演算子を除外すると、すべてのオプション(x)が一致するということです。これはgrepの動作ではなく、他の何ものでもありません。 – JLCDev

+0

@JLCDev Answerでアプローチを使用して一致を強調表示することができます。単に 'res [0]'と 'res [1]'を '' fromHere "'で連結して連結してください。 「私の目標は、ユーザーが入力している間にテキストを強調表示することでした」ということは、元の質問には表示されません – guest271314

関連する問題