【问题标题】:How to extract substring from string with know prefix and suffix using Regex?如何使用正则表达式从已知前缀和后缀的字符串中提取子字符串?
【发布时间】:2019-07-26 19:08:39
【问题描述】:

字符串看起来像

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

我正在使用 Regex,但找不到 Posix Character 类的正确组合。

【问题讨论】:

    标签: regex linux bash shell


    【解决方案1】:

    你可以使用:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 2014-05-06
      • 2021-09-25
      • 2018-11-13
      • 2010-10-14
      相关资源
      最近更新 更多