首页 > 解决方案 > 检查字符串中的值的函数

问题描述

我正在使用一个尝试检查用户在用户目录中的位置的应用程序。

我有类似于以下的字符串:

CN=John Mayor,OU=Users,OU=NA,OU=Local,DC=domain,DC=application,DC=com

或者

CN=Annette Luis Morgant,OU=Users,OU=CH,OU=Local,DC=domain,DC=application,DC=com

我正在尝试在 javascript 中过滤字符串,以便仅打印出second "OU"的值。因此,对于第一种情况,它将是"NA",对于第二种情况,它将是"CH"

尝试使用 substring 和 trim 或类似的东西,但我自己很困惑!你能帮助我吗?谢谢!!!!

编辑-----这就是我想要做的:

public class SplitUser {
public static void main(String[] args) {
    String MyStringContent = "CN=John Mayor,OU=Users,OU=NA,OU=Local,DC=domain,DC=application,DC=com";
    String[] arrSplit = MyStringContent.split(",");
    for (int i=0; i < arrSplit.length; i++)
    {
     System.out.println(arrSplit[i]);
    }   
    //System.out.println(arrSplit[2]);
    String p = arrSplit[2].substring(3, arrSplit[2].length());
    System.out.println(p);
}}

标签: regexstringsubstring

解决方案


你可以试试这个:

(?:,|^)OU=[^,]+(?=.*?,OU=([^,]+)).*

即使在“OU”中插入了一些其他 FOO=BAR 值,它也会起作用

解释:

(?:,|^)  # start by begin of line or ','
OU=   
[^,]+    #Anything but a ',' 1 or more times
         #We have found 1 OU, let's find the next 
(?= # Lookahead expression
    .*? # Anything (ungreedy)
    ,OU=
    ([^,]+)
)
.* # Anything, just to match the whole line 
   # and avoid multiple matches for the same line (g flag)

演示在这里


推荐阅读