🌟
正規表現の肯定の先読みを使って任意の文字列が含まれるか判定する
正規表現の肯定の先読みを使って任意の文字列が含まれるか判定してみました。
やってみた
module Regex
using Test
function main()
@testset "肯定の先読みを使って任意の文字列が含まれるか判定する" begin
reg_exp = r"(?=.*赤犬.*).*"
@test match(reg_exp, "三大将の赤犬、青キジ、黄猿が遊びにきた").match == "三大将の赤犬、青キジ、黄猿が遊びにきた"
@test match(reg_exp, "黄猿は、 八尺瓊勾玉という技をもっている") === nothing
@test match(reg_exp, "赤犬は、 大噴火という技をもっている").match == "赤犬は、 大噴火という技をもっている"
end
@testset "肯定の先読みを使って任意の文字列が複数含まれるか判定する" begin
reg_exp = r"(?=.*赤犬.*)(?=.*青キジ.*)(?=.*黄猿.*).*" # 肯定の先読み
@test match(reg_exp, "三大将の赤犬、青キジ、黄猿が遊びにきた").match == "三大将の赤犬、青キジ、黄猿が遊びにきた"
@test match(reg_exp, "黄猿は、 八尺瓊勾玉という技をもっている") === nothing
@test match(reg_exp, "赤犬は、 大噴火という技をもっている") === nothing
end
end
end
if abspath(PROGRAM_FILE) == @__FILE__
using .Regex
Regex.main()
end
解説
肯定の先読みとは、指定した文字列の直前に一致する正規表現になります。よって(?=.*赤犬.*)(?=.*青キジ.*)(?=.*黄猿.*)
とは直前に赤犬、青キジ、黄猿の位置で一致します。
Discussion