需要正则表达式帮助-如何使用正则表达式提取字符串?

时间:2018-09-06 18:44:11

标签: java regex

我正在寻找正则表达式从另一个字符串中提取一个字符串。

"sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule REQUIRED 
storeKey=true principal='test@test.net' validate=true serviceName=esaas 
keyTab='<some value>' useKeyTab=true;"

如何在keyTab =之后提取字符串?我想在单引号内检索值-

4 个答案:

答案 0 :(得分:2)

使用正则表达式 keyTab ='(。*?)'并匹配组1。在Java中,您的代码应如下所示:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex {
    public static void main(String[] args) {
        String content = "\"sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule REQUIRED \r\n" + 
            "storeKey=true principal='test@test.net' validate=true serviceName=esaas \r\n" + 
            "keyTab='<some value>' useKeyTab=true;\"";
        Pattern pattern = Pattern.compile("keyTab='(.*?)'");
        Matcher matcher = pattern.matcher(content);
        matcher.find();
        System.out.println(matcher.group(1)); //<some value>
    }
}

答案 1 :(得分:1)

在大多数正则表达式引擎中有效的方法是同时查找所需的内容和所需的内容。
并将您想要的东西放在捕获组中

此正则表达式会将捕获组\1中的引号引起来

\bkeyTab=\'([^\']*)\'

\b是一个单词边界,以确保keyTab不属于较大单词。

答案 2 :(得分:0)

您可以使用此表达式找到它:

keyTab='(.*?)'

它将找到keyTab='...'附近的所有值,但只会捕获引号之间的内容。

答案 3 :(得分:0)

[\n\r].*keyTab='\s*([^\n\r]*)'

您所需的匹配项将在捕获组1中。