意外的正则表达式导致 stringr (R)
Unexpected regular expression result in stringr (R)
有人能给我解释一下吗,为什么 str_detect(来自 stringr 包,版本 1.1.0)return 对于以下三个代码中的每一个都为 TRUE,这与我的预期相反?
str_detect("01", "^[0]*[1-9]*[0]+")
str_detect("01", "^0*[1-9]*0+")
str_detect("01", "^0*[1-9]*0")
我想在字符串的开头查找任何零,后跟至少 1 个非零数字,然后是零。
显然“01”字符串不符合条件,因为它在 1 之后没有 0。
我错过了什么吗?我要查找的模式是否错误?
感谢您的宝贵时间!
由于前导 0 在您的模式中是可选的,因此它们将被忽略并且尾随零检测字符串中的 0...
使用 $ 指定字符串的结尾:
str_detect("01", "^[0]*[1-9]*[0]+$")
str_detect("01", "^0*[1-9]*0+$")
str_detect("01", "^0*[1-9]*0$")
我相信你想要以下模式:
^0[1-9]+0
有关完整模式的说明,请参阅 https://regex101.com/r/v9cwHJ/1。
您的具体错误是使用 * 作为第一个 0,它也匹配 none。
也使用 + 作为第二个数字以找到至少 1.
有人能给我解释一下吗,为什么 str_detect(来自 stringr 包,版本 1.1.0)return 对于以下三个代码中的每一个都为 TRUE,这与我的预期相反?
str_detect("01", "^[0]*[1-9]*[0]+")
str_detect("01", "^0*[1-9]*0+")
str_detect("01", "^0*[1-9]*0")
我想在字符串的开头查找任何零,后跟至少 1 个非零数字,然后是零。
显然“01”字符串不符合条件,因为它在 1 之后没有 0。
我错过了什么吗?我要查找的模式是否错误?
感谢您的宝贵时间!
由于前导 0 在您的模式中是可选的,因此它们将被忽略并且尾随零检测字符串中的 0...
使用 $ 指定字符串的结尾:
str_detect("01", "^[0]*[1-9]*[0]+$")
str_detect("01", "^0*[1-9]*0+$")
str_detect("01", "^0*[1-9]*0$")
我相信你想要以下模式:
^0[1-9]+0
有关完整模式的说明,请参阅 https://regex101.com/r/v9cwHJ/1。
您的具体错误是使用 * 作为第一个 0,它也匹配 none。
也使用 + 作为第二个数字以找到至少 1.