gpt4 book ai didi

regex - 如何使用正则表达式从具有已知前缀和后缀的字符串中提取子字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:02:27 25 4
gpt4 key购买 nike

字符串看起来像

string1="userbasedn:DC=i,DC=companyname,DC=com?subtree?(&(objectcategory=person)(uidNumber=*)(|(memberOf:1.2.840.113556.1.4.1941:=cn=example1,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com)(memberOf:1.2.840.11.1.4.1941:=cn=example2,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com)))
groupbasedn:DC=i,DC=companyname,DC=com?subtree?(&(objectcategory=group)(gidNumber=*))"

如何提取子字符串并添加到数组中

arr[0]="cn=example1,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com"
arr[1]="cn=example2,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com"

从“cn”到“DC=com”

我寻找子串的方法

re='(^|cn)([^DC=com])(.*)'
remaining=$string1
while [[ $remaining =~ $re ]];
do
...

done

我正在使用正则表达式,但找不到 Posix 字符类的正确组合。

最佳答案

您可以使用:

mapfile -t arr < <(grep -oE 'cn=[^()]*DC=com' <<< "$string1")

# check array content
declare -p arr

# or using printf
printf '%s\n' "${arr[@]}"

declare -a arr=([0]="cn=example1,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com" [1]="cn=example2,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com")

cn=example1,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com
cn=example2,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com

Code Demo

关于regex - 如何使用正则表达式从具有已知前缀和后缀的字符串中提取子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57225808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com