Java-提取两个特殊字符之间的字符串的一部分

bry*_*yan 21 java regex string special-characters

我一直试图找出如何在两个特殊字符之间提取字符串的一部分'和'我一直在研究正则表达式,但坦率地说我无法理解它.
在Java代码中的示例:

String str="21*90'89\""; 
Run Code Online (Sandbox Code Playgroud)

我想退出89

一般来说,我只想知道如何在两个特定字符之间提取字符串的一部分.

如果知道如何从一开始就将部分字符串提取到特定字符(例如获得21),那将会很高兴.

Mar*_*ers 31

试试这个正则表达式:

'(.*?)"
Run Code Online (Sandbox Code Playgroud)

作为Java字符串文字,您必须按如下方式编写它:

"'(.*?)\""
Run Code Online (Sandbox Code Playgroud)

这是一个更完整的示例,演示如何使用此正则表达式Matcher:

Pattern pattern = Pattern.compile("'(.*?)\"");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
    System.out.println(matcher.group(1));
}
Run Code Online (Sandbox Code Playgroud)

看到它在线工作:ideone


Gor*_*vic 10

如果你总是有这样的字符串(有3个部分)那么这就足够了:

 String str= "21*90'89\"";
 String between = str.split("\"|'")[1];
Run Code Online (Sandbox Code Playgroud)


cha*_*tle 6

public static void main(final String[] args) {
    final String str = "21*90'89\"";
    final Pattern pattern = Pattern.compile("[\\*'\"]");
    final String[] result = pattern.split(str);
    System.out.println(Arrays.toString(result));
}
Run Code Online (Sandbox Code Playgroud)

是你在找什么……上面描述的程序产生:

[21, 90, 89]
Run Code Online (Sandbox Code Playgroud)


Rob*_*ska 5

另一种选择是,如果可以确保字符串始终采用您提供的格式,则可以使用快捷的子字符串/ indexOf解决方案:

str.substring(str.indexOf("'") + 1, str.indexOf("\""));
Run Code Online (Sandbox Code Playgroud)

并获得您要求的第二个数据:

str.substring(0, str.indexOf("*"));
Run Code Online (Sandbox Code Playgroud)