pyspark正则表达式字符串匹配

akn*_*akn 3 regex dataframe pyspark

我的数据框中有一个以下格式的字符串。

abc.T01.xyz
abc.def.T01.xyz
abc.def.ghi.xyz
Run Code Online (Sandbox Code Playgroud)

我需要过滤该字符串具有与该表达式匹配的值的行。

[a-zA-Z].T[0-9].[a-zA-Z]
Run Code Online (Sandbox Code Playgroud)

我使用了以下命令,但它也给了我看起来像这样的字符串:[a-zA-Z].[a-zA-Z].T[0-9].[a-zA-Z]我不希望出现在结果中。

mydf2 = mydf1.where('col1 rlike ".*\.T.*\..*"')
mydf2.show()
Run Code Online (Sandbox Code Playgroud)

我的正则表达式中缺少一些东西。

Jan*_*Jan 5

只需翻译您的要求,而不是使用点星汤并添加锚点:

# [a-zA-Z].T[0-9].[a-zA-Z]
mydf2 = mydf1.where('col1 rlike "^[a-zA-Z.]+\.T[0-9]+\.[a-zA-Z.]+$"')
Run Code Online (Sandbox Code Playgroud)

请参阅regex101.com 上的演示
请注意,我还将点添加到字符类中(这是一个要求吗?),否则您的第二个字符串将无法匹配。如果这不是您想要的,请将其从类中删除。