1

わかりました、私の友人は、彼がコードの一部で見つけた正規表現で私に直面しました.私はまったく経験がありません. 私はそれを理解しようとしましたが、それはかなり基本的なことだと本当に思いますが、問題があります.

式は次のとおりです。^(.*?){0,1}>$

これは、さまざまなチュートリアルと定義から収集したものです。

  • ^は「開始」と$終了を表すため、それらの間の式は、選択するために完全な文字列を記述する必要があります。
  • *?は遅延演算子です (つまり、最初に前の文字の 0 を取得しようとします。それが一致しない場合は、1、2、3 などになります)。
  • (.*?)したがって、これは「できるだけ少ない文字を取る」ことを意味する必要があります。
  • (.*?){0,1}:今、私にとってトラブルが始まります。「0回または1回、できるだけ少ない文字を使用してください」?
  • ^(.*?){0,1}>$: 「可能な限り少ない文字を、0 回または 1 回、文字 > の後に末尾を付けてください」?

それは基本的に「>が文字列の最後にある場合はすべてを選択する」という意味ですか?私は混乱しています...誰かがこの(非常に基本的なものだと思います)問題に光を当てることができれば幸いです...

編集:わかりました、誤解を防ぐために、正規表現はこのコンテキストで使用されます:

.replace(/^(.*?){0,1}>$/,"$1/>");
4

1 に答える 1

4

あなたが持っているものは次のものと同等です:

^(.*)>$

そもそもそれを書いた人はおそらく急いでいて、そこにたくさんの無関係なものを入れていることに気づいていませんでした。


ユースケースを明確にした後、これを使用してください。

.replace(/>$/, '/>');

終了タグの前にスラッシュが追加されます>(存在する場合)。


まだ存在しない場合にのみスラッシュを追加する場合は、次を使用します。

.replace(/([^\/])>$/, '$1/>');
于 2012-06-22T21:55:18.487 に答える