过滤Python LDAP查询的结果

时间:2018-01-17 03:30:12

标签: python regex ldap

我正在尝试使用Python和ldap模块对LDAP查询的结果进行一些处理。在返回的LDAP对象列表中(实际上列表中某些元素是字典的)我有&#39; cn&#39;属性值如下: tag-<username>krh-<username>tag-<username>-abtag-<username>-actag-<username>-adrrt-<username>

我想使用具有确切模式tag-<username>的那些(从tag-开始,最后没有-ab-ac-ad )。

最简单的方法是什么?我假设与正则表达式匹配,但在这种情况下使用正确的正则表达式是什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式过滤结果:tag-([^-]+)$

括号允许捕获匹配的用户名,但您不一定需要它。

  • tag-字面匹配字符tag-(区分大小写)。
  • 捕获小组([^-]+)
    • [^-]+匹配以下列表中不存在的单个字符:
      • -字面匹配字符-(区分大小写)。
      • +量词:在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)。
  • $断言字符串末尾的位置,或者在字符串末尾的行终止符之前(如果有的话)。

例如,字符串tag-usertest提供完整匹配,捕获组usertest,而tag-usertest-<any>之类的字符串不匹配。

您可以在此处运行一些测试:https://regex101.com/r/D4a7I7/1/tests