🎉
正規表現 オンライン教材の基本編をJulia言語で解いた
http://www2.otani.ac.jp/fkdsemi/seikihyogen/mondai.html の基本編をJulia言語で解きました。
解答
module TestMatch
using Test
function main()
@testset "数字の取り出し" begin
reg_exp = r"[1-9]?\d"
@test occursin(reg_exp, "0") == true
@test occursin(reg_exp, "1") == true
@test occursin(reg_exp, "7") == true
@test occursin(reg_exp, "19") == true
@test occursin(reg_exp, "45") == true
@test occursin(reg_exp, "79") == true
@test occursin(reg_exp, "99") == true
end
@testset "単語ごとに取り出す" begin
reg_exp = r"(.*)"
@test occursin(reg_exp, "パン") == true
@test occursin(reg_exp, "トマト") == true
@test occursin(reg_exp, "チーズ") == true
@test occursin(reg_exp, "ハム") == true
@test occursin(reg_exp, "卵") == true
@test occursin(reg_exp, "マヨネーズ") == true
end
@testset "5の倍数を検索" begin
reg_exp = r"(0|5)$"
@test occursin(reg_exp, "5") == true
@test occursin(reg_exp, "7") == false
@test occursin(reg_exp, "10") == true
@test occursin(reg_exp, "14") == false
@test occursin(reg_exp, "20") == true
@test occursin(reg_exp, "90") == true
@test occursin(reg_exp, "138") == false
@test occursin(reg_exp, "205") == true
end
@testset "2の倍数を検索" begin
reg_exp = r"(0|2|4|6|8)$"
@test occursin(reg_exp, "2") == true
@test occursin(reg_exp, "4") == true
@test occursin(reg_exp, "5") == false
@test occursin(reg_exp, "7") == false
@test occursin(reg_exp, "16") == true
@test occursin(reg_exp, "73") == false
@test occursin(reg_exp, "64") == true
@test occursin(reg_exp, "122") == true
end
@testset "日付への一致1" begin
reg_exp = r"\d{1,2}/\d{1,2}"
@test occursin(reg_exp, "1月1日") == false
@test occursin(reg_exp, "5/21") == true
@test_skip occursin(reg_exp, "10/46") == false
@test occursin(reg_exp, "7/14") == true
@test occursin(reg_exp, "3/6") == true
@test occursin(reg_exp, "6月7日") == false
end
@testset "基礎的な置換1" begin
string = "近代的なオフィスにはコンピューターは無くてはならない存在です。コンピューターの導入は、作業の効率化やペーパーレス化をもたらしました。"
reg_exp = r"コンピューター"
expected = "近代的なオフィスにはコンピュータは無くてはならない存在です。コンピュータの導入は、作業の効率化やペーパーレス化をもたらしました。"
@test replace(string, reg_exp => "コンピュータ") == expected
end
@testset "基礎的な置換1" begin
string = "<h1>Python入門</h1><h2>Pythonとはどんな言語か</h2><p>Pythonは、コンパイルを必要としないスクリプト言語の一つで、欧米ではPerlに次ぐほどの人気を誇っています。</p>"
reg_exp = r"(<h1>)|(</h1>)|(<h2>)|(</h2>)(<p>)|(</p>)"
expected = "Python入門Pythonとはどんな言語かPythonは、コンパイルを必要としないスクリプト言語の一つで、欧米ではPerlに次ぐほどの人気を誇っています。"
@test replace(string, reg_exp => "") == expected
end
end
end
if abspath(PROGRAM_FILE) == @__FILE__
using .TestMatch
TestMatch.main()
end
感想
プログラマー雑談というポッドキャストを聞きながら、解きました。普段のプログラミングとは異なり独特の考え方が求められていて、難しいですね〜。
Discussion