从 stringi 字符集中的字母数字 ID 中排除 "I" 和 "O"
Exclude "I" and "O" from alpha-numeric id in stringi character set
我从 得知,我可以使用 stringi
和 stri_rand_strings
生成唯一的字母数字 ID。我正在尝试找出一种有效的方法,但只包括数字 0-9 和除 "I" 和 "O" 之外的所有字母。我似乎无法弄清楚如何将其包含在模式中 c( LETTERS[c(1:8,10:14,16:26)],"[0-9]")
stri_rand_strings(25, 6)
修改模式以排除那些字母
stri_rand_strings(25, 6, pattern = "[a-zA-HJ-NP-Z0-9]")
[1] "l3e6eH" "NfcjuP" "vtHxWy" "bs2Zd1" "2UGWoJ" "GhettL" "mvvLqi" "AtBBnd" "ijsDFj" "4CXpn6" "MpyUEh" "HZUyDi" "Fba7Af"
[14] "M3lWdn" "A5Vf8D" "tcC9as" "jTXyK5" "U5gUCy" "rnQN1p" "vEouUF" "c8ZU35" "C91o7m" "vuM7iE" "dl49kM" "opucvl"
只使用大写字母
stri_rand_strings(25, 6, pattern = "[A-HJ-NP-Z0-9]")
更灵活的方法是使用ICU regex engine feature called character class subtraction。
要匹配除 I
和 O
之外的任何 ASCII 字母数字字符,请使用 [[:alnum:]&\p{ASCII}-[IO]]
正则表达式模式:
[
- 括号表达式的开始:
[:alnum:]
- 匹配任何 Unicode 字母数字
&
- 和
\p{ASCII}
- 字母数字必须来自 ASCII 集
-[IO]
- 但 I
和 O
个字符
]
- 括号表达式结束。
最终的解决方案看起来像
stri_rand_strings(25, 6, pattern = "[[:alnum:]&\p{ASCII}-[IO]]")
我得到的输出:
[1] "7hWJdu" "cjvekt" "oPqg0C" "pK1JRi" "lrjB2G" "2Zjp0P" "bR7XcK" "V1i8XG" "hojuMU" "4fHpAP" "vSAHFP" "BTXabM" "RWQjaF" "Ac0VbH" "d4GXh1" "kAXWR5" "gx7rQX" "sRXmmw"
[19] "kXcb9H" "mJPuCL" "yBylmm" "wqCtUJ" "zgefj9" "1v6gYY" "l47wjf"
我从 stringi
和 stri_rand_strings
生成唯一的字母数字 ID。我正在尝试找出一种有效的方法,但只包括数字 0-9 和除 "I" 和 "O" 之外的所有字母。我似乎无法弄清楚如何将其包含在模式中 c( LETTERS[c(1:8,10:14,16:26)],"[0-9]")
stri_rand_strings(25, 6)
修改模式以排除那些字母
stri_rand_strings(25, 6, pattern = "[a-zA-HJ-NP-Z0-9]")
[1] "l3e6eH" "NfcjuP" "vtHxWy" "bs2Zd1" "2UGWoJ" "GhettL" "mvvLqi" "AtBBnd" "ijsDFj" "4CXpn6" "MpyUEh" "HZUyDi" "Fba7Af"
[14] "M3lWdn" "A5Vf8D" "tcC9as" "jTXyK5" "U5gUCy" "rnQN1p" "vEouUF" "c8ZU35" "C91o7m" "vuM7iE" "dl49kM" "opucvl"
只使用大写字母
stri_rand_strings(25, 6, pattern = "[A-HJ-NP-Z0-9]")
更灵活的方法是使用ICU regex engine feature called character class subtraction。
要匹配除 I
和 O
之外的任何 ASCII 字母数字字符,请使用 [[:alnum:]&\p{ASCII}-[IO]]
正则表达式模式:
[
- 括号表达式的开始:[:alnum:]
- 匹配任何 Unicode 字母数字&
- 和\p{ASCII}
- 字母数字必须来自 ASCII 集-[IO]
- 但I
和O
个字符
]
- 括号表达式结束。
最终的解决方案看起来像
stri_rand_strings(25, 6, pattern = "[[:alnum:]&\p{ASCII}-[IO]]")
我得到的输出:
[1] "7hWJdu" "cjvekt" "oPqg0C" "pK1JRi" "lrjB2G" "2Zjp0P" "bR7XcK" "V1i8XG" "hojuMU" "4fHpAP" "vSAHFP" "BTXabM" "RWQjaF" "Ac0VbH" "d4GXh1" "kAXWR5" "gx7rQX" "sRXmmw"
[19] "kXcb9H" "mJPuCL" "yBylmm" "wqCtUJ" "zgefj9" "1v6gYY" "l47wjf"