echo T.utfre: tests of regular expression code for Unicode/utf-8 # adapted from T.re awk ' BEGIN { FS = "\t" awk = "../a.out" } NF == 0 { next } $1 != "" { # new test re = $1 } $2 != "" { # either ~ or !~ op = $2 if (op == "~") neg = "!" else if (op == "!~") neg = "" } $3 != "" { # new test string str = $3 } $3 == "\"\"" { # explicit empty line $3 = "" } NF > 2 { # generate a test input = $3 test = sprintf("./echo '"'"'%s'"'"' | %s '"'"'%s/%s/ {print \"%d fails %s %s %s\"}'"'"'", input, awk, neg, re, NR, re, op, input) # printf(" %3d %s %s %s:\n", NR, re, op, input) # print "test is |" test "|" system(test) # system("bprint -c ../a.out") nt++ } END { print " " nt, "tests" } ' <<\!!!! ~ 🖕 🖕🖕 🖕🖕🖕 "" 🖕 ~ 🖕 b🖕 b🖕b !~ "" æ—¶ xxxxx . ~ æ—¶ xæ—¶x 🙂 !~ "" .ã® ~ xã® xxã® xã®x !~ ã® ã®x "" $ ~ x 🙂 "" .$ ~ 모 xx모 x모x !~ "" д$ ~ д bд bbbд !~ дb x "" ^ ~ и "" ^ ^λ$ ~ λ !~ xλ λx xλx "" ^λ.$ ~ λx λλ !~ xλ λλλ λxy "" ^$ ~ "" !~ ã« ^ ^.í•´ ~ ã‚í•´ ã‚í•´í•´ !~ í•´ "" ^.*í•´ ~ í•´ ã‚í•´ ã‚ã‚ã‚ã‚ã‚ã‚í•´ !~ "" ^.+í•´ ~ ã‚í•´ ã‚ã‚ã‚ã‚ã‚ã‚í•´ !~ "" í•´ í•´ã‚ í•´* ~ "" í•´ í•´í•´í•´í•´ ã‚í•´ ã‚ã‚ã‚ã‚ í•´í•´* ~ í•´ í•´í•´í•´ ã‚í•´ !~ ã‚ã‚ã‚ã‚ "" \$ ~ 🖕$ $ $🖕 🖕$🖕 !~ "" 🖕 \. ~ . !~ 🖕 "" xθ+y ~ xθy xθθy xθθθθθθy !~ θy xy xθ xθ?y ~ xy xθy !~ xθθy θ?b?ã®? ~ "" x ^a?b?ã‚ ~ ã‚ aã‚ bã‚ abã‚ ã‚a !~ "" ab aba [Α-Ω] ~ Α aΔb xyΩ !~ abc β "" [^Α-Ω] ~ δ aΔb xyΩ !~ Α Δ "" [Α-ΔΦ-Ω] ~ Α Î’ Δ Φ Ω !~ ΠΣ Î [[:lower:]]+ ~ Î a Î ab !~ Î Î X Î : Î [ Î ] ã®[0-9]+ã« ~ ã®0ã« ã®23ã« ã®12345ã« !~ 0ã« ã®ã« ã®[0-9]?ã« ~ ã®ã« ã®1ã« !~ ã®23ã« ã®[[]ã« ~ ã®[ã« !~ ã®ã« ã®[[]ã« ã®]ã« ã®[[-]ã« ~ ã®[ã« ã®-ã« !~ ã®ã« ã®[[]ã« ã®]ã« ã®[[-a]ã« ~ ã®[ã« ã®aã« ã®]ã« !~ ã®ã« ã®[[]ã« ã®-ã« ã®[]-a]ã« ~ ã®]ã« ã®aã« !~ ã®ã« ã®[ã« ã®-ã« ã®[]]ã« ~ ã®]ã« !~ ã®ã« ã®[]]ã« ã®[ã« ã®[^[]ã« ~ ã®aã« !~ ã®[ã« ã®[-]ã« ~ ã®-ã« !~ ã®ã« ã®+ã« ã®[^-]ã« ~ ã®+ã« !~ ã®-ã« ã®ã« ã®[][]ã« ~ ã®[ã« ã®]ã« !~ ã®ã« ã®][ã« ã®[]ã« ã®[z-a]ã« ~ ã®ã« !~ ã® ã« ã®aã« ã®zã« ã®-ã« ã«|ã ~ ã ã« ã ã« !~ a "" ^στο|τους$ ~ στο στοd aτους τους !~ xστο τουςa ^(στο|τους)$ ~ στο τους !~ στοτους στοx cτους !!!!