java spring pattern match String

时间:2017-07-31 08:43:50

标签: java regex

我有一个模式可以获得

String string = "max_len[5];"

数字5可以是0-9

的任何值

现在我需要检查max_len是否是一个模式然后是否需要获得5

if(string = "max_len" //regex){
  int = regex for the number 5;
}

4 个答案:

答案 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