Ruby 提取部分字符串

Ruby extract part of string

我有以下字符串...

CN=KendallLDAPTEST Weihe,OU=CORPUSERS,OU=CORP,DC=int,DC=appriss,DC=com

我需要提取 KendallLDAPTEST Weihe

换句话说,我需要提取第一个 = 和第一个 ,

之间的所有字符串数据

您可以简单地在 , 上使用 split 拆分字符串,首先生成一个 key=value 对数组,然后在 = 上拆分这些对。

str = 'CN=KendallLDAPTEST Weihe,OU=CORPUSERS,OU=CORP,DC=int,DC=appriss,DC=com'

pairs = str.split(',').map { |pair| pair.split('=') }
# => [["CN", "KendallLDAPTEST Weihe"], ["OU", "CORPUSERS"], ["OU", "CORP"], ["DC", "int"], ["DC", "appriss"], ["DC", "com"]]

pairs.first[1]
# => "KendallLDAPTEST Weihe"

这有点天真,因为如果您的任何数据包含转义的 =, 字符,它将无法工作。

已测试,有效

使用正则表达式:

str = "CN=KendallLDAPTESTWeihe,OU=CORPUSERS,OU=CORP,DC=int,DC=appriss,DC=com"

str[/\=(.*?),/,1]

对于任何重复使用此内容的人,请将 here 的两个实例替换为您想要在其间查找文本的字符:

[/\here(.*?)here/,1]

如果您尝试捕获的文本总是出现在同一索引中,您可以使用此方法:

the_text[3...22]

我会使用:

str = "CN=KendallLDAPTEST Weihe,OU=CORPUSERS,OU=CORP,DC=int,DC=appriss,DC=com"
str[/=([^,]+)/, 1] # => "KendallLDAPTEST Weihe"

默认情况下,正则表达式会找到第一个匹配项然后停止。这只是找到第一个 =,然后捕获所有不是 , 的字符,直到第一个 ',' 和 returns 它。