我在数据框中有一个字符串,格式如下。
abc.T01.xyz
abc.def.T01.xyz
abc.def.ghi.xyz
我需要过滤此字符串具有与此表达式匹配的值的行。
[a-zA-Z].T[0-9].[a-zA-Z]
我使用了以下命令,但它也给了我看起来像这样的字符串:[a-zA-Z].[a-zA-Z].T[0-9].[a-zA-Z]
我不希望在我的结果中使用。
mydf2 = mydf1.where('col1 rlike ".*\.T.*\..*"')
mydf2.show()
我遗漏了我的正则表达式。
答案 0 :(得分:1)
只需翻译您的要求,而不是使用点星汤并添加锚点:
# [a-zA-Z].T[0-9].[a-zA-Z]
mydf2 = mydf1.where('col1 rlike "^[a-zA-Z.]+\.T[0-9]+\.[a-zA-Z.]+$"')
请参阅a demo on regex101.com 请注意,我还在字符类中添加了点(这是一个要求吗?),否则你的第二个字符串不会匹配。如果这不是您想要的,请从课程中删除它。