此问题已在此处有答案:
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
1条答案
按热度按时间enyaitl31#
((\\d)|(A-Z)){8}
正好匹配8个组,其中每个组必须是数字,或者是字面上的A-Z
。Here是第一个正则表达式匹配的示例。(...)
是regex中的一个组,它匹配regex中指定的模式。[...]
是一个symbol类,它匹配里面指定的任何symbol:作为符号(例如abc
)或符号范围(例如a-c
)。很可能你想写
(\\d|[A-Z]){8}
。在这种情况下,它将匹配8位数字或大写字母。简化后的表达式将是[\\dA-Z]{8}
。