まず最初に断っておきますが、この記事を書く前に正規表現をいじるのに 2 時間以上費やしました。悲しい~悲しい~悲しい~
一般的な考え方に従って、他のいくつかの挿入方法を見てみましょう: 私は文字列
var str = "eattd gebcat gedat jadu geat beu";
は例です。
1. 「ge」で始まる場合、結果は「gebcat、gedat、geat」になります。単語が「ge」で始まるため、後で使用するために新しい配列を入れることができます。
var exp1 = /bgew /ig; 🎜>
var matchedStr = exp1.exec(str);
while (matchedStr != null && matchedStr.index < str.length) {
if (matchedStr[0] != null ) {
inv.innerHTML = "
結果は次のようになります: " matchedStr[0];
//newStr = newStr.replace(matchedStr[0]);
wordsArr.push(matchedStr[ 0]) ;
}
matchedStr = exp1.exec(str);
2. 「at」で終わる単語の場合、結果は「gebcat」になります。 「ゲダッ」、「ゲッ」。同様に、配列を入れることもできます。
var exp1 = /w (atb)/ ig;
3. 「ge」で始まらない単語については、それらを格納するために別の配列が必要です。
var exp1 = /b(?!ge )w / ig;
var WordsArr = new Array();
var matchedStr = exp1.exec(str);
while (matchedStr != null && matchedStr.index < str.length ) {
if (matchedStr[0] != null) {
inv.innerHTML = "
結果は次のようになります: " matchedStr[0];
newStr = newStr.replace(matchedStr[0] ]);
wordsArr.push(matchedStr[0]);
matchedStr = exp1.exec(str);
//wordsArr = newStr.split( " ") ;
for (var i = 0; i if (wordsArr[i] == "未定義") {
wordsArr.splice(i) ,1) ;
} else
i
}
4. 「at」で終わらない単語 さて、ここで問題が発生します。 Javascript の正規表現は比較的弱く、逆引き否定をサポートしていないため、次のように記述することはできません。
コードをコピー
および
コードをコピー
の右側
の意味での単語の終わりは "at" にすることはできません。つまり、単語の境界を見つけることは不可能です。別の角度から書いて、at で終わる単語を見つけて、元の文字列からその単語を削除します。次に、新しい配列を入れます。
コードをコピー
コードは次のとおりです。 function RegularExpTest() { var inv = document .getElementById("RegexTest");
var str = "eattd gedbcat gedat jadu geat beu";
var newStr = str
var exp1 = /w atb/ig; WordsArr = new Array();
var matchedStr = exp1.exec(str);
while (matchedStr != null && matchedStr.index < str.length) {
if (matchedStr[ 0] ! = null) {
inv.innerHTML = "
結果は次のようになります: " matchedStr[0];
newStr = newStr.replace(🎜>); >matchedStr = exp1.exec(str);
}
wordsArr = newStr.split(" ");
for (var i = 0; i
) {
if (wordsArr[i] == "未定義") {
wordsArr.splice(i,1)
} else
i
}
inv .innerHTML = "
結果は次のようになります。 " WordsArr;
}
OK、完了です。
考えれば得られるが、考えなければ得られない。