答えて
*
はすべて一致し、境界付近で停止しないため、" text\n"
の代わりに" text\nr#;\n\nr#;\n text2\n"
を消費するという問題があります。
/#r;[\w\W]*?#r;/
非欲張り修飾子(*
後?
)が動作するように、全体としての正規表現のためにちょうど十分一致する*
が発生します。解決策は*
怠惰にすることです。貪欲数量詞は、最初のトークンにできるだけ多くの回数を繰り返してみてください、と徐々にエンジンが全体的に一致するものを見つけるために、バックトラックとして試合を放棄します
:
http://www.regular-expressions.info/possessive.htmlは、より多くの情報を持っています。遅延量指定子は、最初にトークンを必要な回数だけ繰り返し、エンジンが正規表現を通してバックトラックして全体的な一致を見つけるように徐々にマッチを展開します。
thnx a ton .. u guys rock – ahhmarr
これを試してください。
/#r;[\w\W](?=#r;)/
はオプション最良の推奨オプションとして、以下の4を参照してください。
オプション1:先読みを使用し、非欲張りワイルドカード一致を使用せずに、あなたがこの正規表現を使用することができます。
/#r;.*?#r;/
これは一致します。
a pattern that starts with "#r;"
followed by any number of characters, but the fewest possible
followed by "#r;"
オプション2:をか区切り文字の間にテキストだけを入れたい場合は、これを使用して検索から返された[1]項目を参照することができます:
/#r;(.*?)#r;/
"#r;text1#r;#r;text2#r;".match(/#r;(.*?)#r;/)[1] == "text1"
あなたがここにアクションでそれを見ることができます:http://jsfiddle.net/jfriend00/ZYdP8/
オプション3:または、各#Rの前と後への改行が実際に存在する場合、 http://jsfiddle.net/jfriend00/ZYdP8/10/:あなたはここで働い見ることができます
/#r;\n(.*?)\n#r;/
:あなたが合うようにしようとしている事で、あなたは、この正規表現を使用します。
オプション4:はまた、あなたがいかなる種類の空白は、境界上の試合の一部にしたくない場合は(トムの提案を取って)、あなたはこれを使用することができます。
/#r;\s*(.*?)\s*#r;/
いるあなたをここで働いて見ることができます:http://jsfiddle.net/jfriend00/ZYdP8/12/。
私は '/#r; \ s *(。*?)\ s *#r;/'。これは一様な正規表現で、 '#r;'タグの間に空白が含まれている場合でも空白が含まれていない場合でも使用できます。 –
@TomKnapen - 良い提案トム。私は、OPの空白に必要なものが不明であった。私はテキストに実際に改行があったのかどうか、また他の空白を試合の一部にしたいのかどうかはわかりませんでした。私はこの提案を私の答えの最後に加えました。 – jfriend00
'。*? 'は複数行のシーケンスと一致しませんか? –
- 1. MongoDBマップ/組み込みオブジェクトの最初の発生数を減らす
- 2. Javascript - なぜ最初のdivが最初のdivにのみ発生し、2番目のdivには発生しませんか?
- 3. のみ最初のコマンドは
- 4. は、最初のレコードのみ
- 5. 最初の画像を読み込んだ後にイベントが発生する
- 6. パンダDATAFRAMEは、最初の発生を見つける
- 7. java indexOfは最初の発生を無視します
- 8. 最初の発生を検索中にエラーが発生しました
- 9. モジュラスのevalの最初の発生を取得
- 10. ゲームの未定義変数の最初の読み込みでフェイザーエラーが発生する
- 11. イベントは最初のポストバックでは発生しませんが、その後に発生します
- 12. (Java)二重リンクリスト、最初の発生の削除。
- 13. 私の最初のスプリングコードでエラーが発生しました
- 14. 「System.Data.DBConcurrencyException」タイプの最初のチャンス例外が発生しました
- 15. kotlinの最初のテーブルでエラーが発生しました
- 16. 'System.IO.FileLoadException'タイプの最初のチャンス例外が発生しました
- 17. jQueryは2回目のクリックでは発生しますが、最初には発生しません。
- 18. 例外:「クリック」の評価中のエラーは、最初のクリック後にのみ発生します。
- 19. 最初に発生した例外を返す方法は?
- 20. カスタムHTML5フォームの検証エラーは、最初の試行後にのみ発生します
- 21. マルチレベルのブートストラップメニューは、最初のレベルのみ
- 22. 最初の実行でペーストエラーが発生しました
- 23. 最初の実行後に 'twisted.internet.error.ReactorNotRestartable'エラーが発生する
- 24. 子クラスのRubyハンドルエラーが最初に発生する
- 25. Safari(WordPress)で最初のドロップダウンが発生しない
- 26. Entity Frameworkコードテストプロジェクトで最初のエラーが発生しました
- 27. asp.net dropdownlist最初のキーストロークでselectedindexchangeを発生させない
- 28. 最初の派生クラスのみが含まれています
- 29. はjavascriptのみ、最初のように
- 30. PHP - MySQLのクエリは、最初の試み
これは、http://stackoverflow.com/questions/2074452/regex-to-first-occurence-onlyの複製のようです。 – MetaEd