regex R方括号与圆括号中的正则表达式[重复]

goqiplq2  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(128)

此问题已在此处有答案

Reference - What does this regex mean?(1个答案)
2天前关闭。
为什么下面的代码计算结果不同?
例如:
str_detect(c('12312312','PO123123', 'ABCDDBCA'),'((\\d)|(A-Z)){8}')
评估为
TRUE FALSE FALSE

str_detect(c('12312312','PO123123', 'ABCDDCBA'),'[\\d|A-Z]{8}')
评估为
TRUE TRUE TRUE
我知道"|第二个表达式中的''字符是不需要的,因为在方括号中它被视为文字字符而不是或符号,但尽管如此,我不明白为什么第一个正则表达式的计算结果不是TRUE TRUE TRUE
谢谢你
我希望两者的计算结果都是TRUE TRUE TRUE

enyaitl3

enyaitl31#

((\\d)|(A-Z)){8}正好匹配8个组,其中每个组必须是数字,或者是字面上的A-ZHere是第一个正则表达式匹配的示例。
(...)是regex中的一个组,它匹配regex中指定的模式。
[...]是一个symbol类,它匹配里面指定的任何symbol:作为符号(例如abc)或符号范围(例如a-c)。
很可能你想写(\\d|[A-Z]){8}。在这种情况下,它将匹配8位数字或大写字母。简化后的表达式将是[\\dA-Z]{8}

相关问题