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)
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)
另一种选择是,如果可以确保字符串始终采用您提供的格式,则可以使用快捷的子字符串/ 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)
| 归档时间: |
|
| 查看次数: |
86202 次 |
| 最近记录: |