繁体   English   中英

如何匹配特定模式的字符串但排除特定模式?

[英]How to match string of a certain pattern but exclude one specific pattern?

我是 python 的新手。我需要匹配 pandas dataframe 的列名,其形式为: names_(one more additional word)

但是从这场比赛中,我需要跳过一个特定的列名names_info

假设数据的列名如下

"names_full" "names_first" "names_last" "names_attribute" "names_info" "address" "pin" "balance"

我设法在 python 中写了这么多:

colnames.str.contains(r"(names_)")

并且它在开始时给出所有带有“names_”的列。 如何从中跳过一个特定案例? 我是正则表达式的新手,所以请尽可能解释一下逻辑

您可以使用否定先行断言某些术语不会出现在names_之后,例如

colnames.str.contains(r"names_(?!item$)")

这将匹配除names_item之外的每个列名称(尽管它匹配names_items )。

此处使用的正则表达式模式表示匹配:

names_     column name starts with "names_"
(?!item$)  what immediately follows is NOT "item"

请注意, names_items以及包含item后跟一个或多个字符的任何其他内容都是有效的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM