1

open-uri を介して Web ページを取得し、それに対して正規表現を実行して、ページにある聖書の一節を見つける Ruby スクリプトを作成しました。正規表現を使用して Chrome 正規表現検索プラグインを実行すると、期待どおりに詩が強調表示されます。これを Ruby で実行すると、すべての節が選択されるわけではありません。scanこの問題は、I use を使用してすべての一致を取得するときに、正規表現グループに基づいてサブマッチを取得しているという事実に関係していると確信しています。正規表現に完全に一致するものだけを取得するにはどうすればよいですか? グループに基づくサブマッチは気にしません。

たとえば、「John 3:16」は、グループを使用した結果の「John」、「3」、「3:16」などの部分ではなく、重要な一致です。

関連するコードは次のとおりです。

rx = Regex.new("(Genesis|Gen|Ge|Gn|Exodus|Exo|Ex|Exod|Leviticus|Lev|Le|Lv|Numbers|Num|Nu|Nm|Nb|Deuteronomy|Deut|Dt|Joshua|Josh|Jos|Jsh|Judges|Judg|Jdg|Jg|Jdgs|Ruth|Rth|Ru|Ezra|Ezr|Ez|Nehemiah|Neh|Ne|Esther|Esth|Es|Job|Jb|Psalm|Pslm|Ps|Psalms|Psa|Psm|Pss|Proverbs|Prov|Pr|Prv|Ecclesiastes|Eccles|Ec|Song of Solomon|Song|So|Song of Songs|SOS|Isaiah|Isa|Is|Jeremiah|Jer|Je|Jr|Lamentations|Lam|La|Ezekiel|Ezek|Eze|Ezk|Daniel|Dan|Da|Dn|Hosea|Hos|Ho|Joel|Joel|Joe|Jl|Amos|Amo|Am|Obadiah|Obad|Ob|Jonah|Jnh|Jon|Micah|Micah|Mic|Nahum|Nah|Na|Habakkuk|Hab|Zephaniah|Zeph|Zep|Zp|Haggai|Hag|Hg|Zechariah|Zech|Zec|Zc|Malachi|Mal|Ml|Ecclesiastes|Eccl|Ecc|Ec|Jeremiah|Jer|Matthew|Matt|Mt|Mark|Mrk|Mk|Mr|Luke|Luk|Lk|Lu|Acts|Act|Ac|Romans|Rom|Ro|Rm|Galatians|Gal|Ga|Ephesians|Ephes|Eph|Philippians|Phil|Php|Colossians|Col|Titus|Tit|Philemon|Philem|Phm|Phi|Hebrews|Heb|James|Jas|Jm|Ja|Jude|Jud|((1|I|1st|First|2|II|2nd|Second) ?(Samuel|Sam|Sa|Kings|Kgs|Ki|K|Chronicles|Chron|Ch|Corinthians|Cor|Co|Thessalonians|Thess|Thes|Th|Timothy|Tim|Ti|Peter|Pet|Pe|Pt))|(((1|I|1st|First|2|II|2nd|Second|3|III|3rd|Third) ?)?John|Jn|Jhn)).?(,? ?[1-9][0-9]?[0-9]?:[1-9][0-9]?[0-9]?(-[1-9][0-9]?[0-9]?)?)+")
verses  = content.scan(rx)
4

1 に答える 1