我有一个模式可以获得
String string = "max_len[5];"
数字5可以是0-9
的任何值现在我需要检查max_len是否是一个模式然后是否需要获得5
if(string = "max_len" //regex){
int = regex for the number 5;
}
答案 0 :(得分:1)
我建议您通过tutorial on regular expressions,因为这既可以帮助您解决问题,但更重要的是了解您将来如何解决类似问题。
无论如何,您希望使用Java的Pattern来匹配 max_len 并同时提取数字。以下是您的工作方式:
Pattern pattern = Pattern.compile("max_len\[(?<maxLength>\d)\];");
Matcher match = pattern.matcher(string);
if (match.matches()) {
int maxLength = Integer.parseInt(match.group("maxLength"));
print("The maximum length is " + match.group("maxLength"));
} else {
print("The string didn't match the pattern");
}
该模式分为以下几种:
max_len\[
匹配字符串 max_len [ (?<maxLength>\d)
创建一个名为maxLength的匹配组,匹配任何单个数字\];
匹配字符串]; 您可以在regex101.com处对正则表达式进行更全面的细分,您也可以在其中使用它并尝试哪些输入字符串匹配,哪些不匹配。
如果我们获得成功匹配,我们可以提取名为 maxLength 的组的值,并将其解析为整数。我们知道解析为整数而不会出现任何异常是安全的,因为只有当数字为数字时才会匹配,因此字符串 max_length [five]; 将导致{{1} }返回match.matches()
。
如果您想允许更大的单个数字,您可以将false
更改为\d
。加号表示将匹配任意数量的数字,但至少有一个。如果使用星号( * ),则会匹配任意数量的数字,包括没有数字会导致\d+
抛出异常,因为空字符串(Integer.parseInt
)不是有效的数字。
答案 1 :(得分:0)
这是你想要的正则表达式:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HelloWorld{
public static void main( String args[] ) {
// String to be scanned to find the pattern.
String line = "max_len[5];";
String pattern = "^max_len\\[(\\d+)\\];$";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
}else {
System.out.println("NO MATCH");
}
}
}
答案 2 :(得分:0)
以下代码应该有效:
var localConfig = [(String,String)]()
localConfig.append(("Hello","World"))
localConfig.append(("Bye", "John"))
答案 3 :(得分:0)
试试这个。
String string = "max_len[9]";
String number = string.replaceFirst("^max_len\\[(\\d)\\]$", "$1");
if (!number.equals(string)) {
int n = Integer.parseInt(number);
System.out.println(n);
}
结果
9