我正在尝试使用Tableau 10.0中的REGEXP_EXTRACT(字符串,模式)函数。我之前在C,R和python中使用过regex。即使是最简单的正则表达式,Tableau似乎也没有合作,我所能得到的只是" Null"。我的数据源是Excel电子表格(.xlsx)。我也尝试使用具有相同数据的CSV文件无济于事。
实施例: 玩家[1] =" Ezekiel Elliott,RB" (例如,玩家维度包含格式[A-z] {1,40},\ s [A-Z] {2}的值。我试图捕获最后两个字母,其中包含玩家在计算字段中的足球位置(RB,QB等)。 以下所有内容只返回null:
REGEXP_EXTRACT([Players], '(?<=,\s)[A-Z]{2}')
REGEXP_EXTRACT([Players], '(?<=,\s)[A-Z]{2}')
REGEXP_EXTRACT[[Players], "[e,E]")
REGEXP_EXTRACT("Ezekiel Elliott, RB", "[e,E]")
最后两个特别令人不安,因为我甚至不能写一封信。
任何解决方案,对我做错的解释,甚至是指向照明方向的箭头都将非常感激。我已经就ICU正则表达式http://userguide.icu-project.org/strings/regexp的参考资料进行了咨询,但没有运气。
答案 0 :(得分:1)
您需要捕获您需要提取的内容:
REGEXP_EXTRACT[[Players], "([A-Z]{2})$")
([A-Z]{2})$
将匹配以下内容:
([A-Z]{2})
- 匹配并捕获到第1组(最后会得到的)正好两个ASCII大写字母$
- 断言字符串位置的结束。如果您说这些条目可以与^[A-Za-z]{1,40},\s([A-Z]{2})$
匹配,您也可以使用此模式(此处^
匹配字符串的开头,[A-Za-z]{1,40}
将匹配1到40个ASCII字母,,
将匹配逗号,其余模式与上面相同)。请注意[A-z]
matches more than just letters。