我正在尝试使用 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
)。
最简单的方法是什么?我假设与正则表达式匹配,但在这种情况下使用正确的正则表达式是什么?
谢谢!
最佳答案
您可以使用此正则表达式来过滤结果:tag-([^-]+)$
括号允许捕获匹配的用户名,但您不一定需要它。
-
tag-
匹配字符tag-
从字面上看(区分大小写)。 - 正在捕获组
([^-]+)
。-
[^-]+
匹配以下列表中不存在的单个字符:-
-
匹配字符-
从字面上看(区分大小写)。 -
+
量词:匹配一次到无限次,尽可能多的次数,根据需要回馈(贪婪)。
-
-
-
$
在字符串末尾或在字符串末尾的行终止符之前(如果有)断言位置。
例如,字符串 tag-usertest
给出完整匹配,捕获组 usertest
,以及类似 tag-usertest-<any>
的字符串不会匹配。
您可以在这里运行一些测试:https://regex101.com/r/D4a7I7/1/tests
关于python - Python LDAP查询的过滤结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48293157/