我正在尝试使用Python和ldap模块对LDAP查询的结果进行一些处理。在返回的LDAP对象列表中(实际上列表中某些元素是字典的)我有' cn'属性值如下:
tag-<username>
,
krh-<username>
,
tag-<username>-ab
,
tag-<username>-ac
,
tag-<username>-ad
,
rrt-<username>
。
我想使用具有确切模式tag-<username>
的那些(从tag-
开始,最后没有-ab
,-ac
或-ad
)。
最简单的方法是什么?我假设与正则表达式匹配,但在这种情况下使用正确的正则表达式是什么?
谢谢!
答案 0 :(得分:1)
您可以使用此正则表达式过滤结果:tag-([^-]+)$
括号允许捕获匹配的用户名,但您不一定需要它。
tag-
字面匹配字符tag-
(区分大小写)。([^-]+)
。
[^-]+
匹配以下列表中不存在的单个字符:
-
字面匹配字符-
(区分大小写)。+
量词:在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)。$
断言字符串末尾的位置,或者在字符串末尾的行终止符之前(如果有的话)。例如,字符串tag-usertest
提供完整匹配,捕获组usertest
,而tag-usertest-<any>
之类的字符串不匹配。
您可以在此处运行一些测试:https://regex101.com/r/D4a7I7/1/tests