我有一個模式來獲得java的春天模式匹配字符串
String string = "max_len[5];"
數量5可爲0-9
現在什麼,我需要檢查,如果MAX_LEN那麼一個模式,如果它是我需要獲得5
if(string = "max_len" //regex){
int = regex for the number 5;
}
我有一個模式來獲得java的春天模式匹配字符串
String string = "max_len[5];"
數量5可爲0-9
現在什麼,我需要檢查,如果MAX_LEN那麼一個模式,如果它是我需要獲得5
if(string = "max_len" //regex){
int = regex for the number 5;
}
我建議你去通過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)
創建一個任何一個數字相匹配的匹配組命名的最大長度\];
匹配字符串];你可以得到正則表達式超過在regex101.com更徹底的崩潰,你也可以玩它,並嘗試了其中的輸入字符串匹配而哪些不會。
如果我們獲得成功的匹配,我們可以提取名爲maxLength的組的值並將其解析爲整數。我們知道,在不捕捉任何異常的情況下解析爲整數是安全的,因爲只有當它是數字時模式纔會匹配,所以字符串max_length [five];將導致match.matches()
返回false
。
如果你想允許更大的數字,單個數字,你可以將\d
更改爲\d+
。加號表示任意數量的數字,但至少有一個數字將被匹配。如果使用星號(*),您將匹配任意數量的數字,包括無數字,這將導致Integer.parseInt
引發異常,因爲空字符串(""
)不是有效數字。
在這裏您正則表達式,你想:
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");
}
}
}
以下代碼應該可以工作:
String regex = "^max_len\\[(\\d+)\\];$";
String stringPattern = "max_len[5];";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(stringPattern);
if(matcher.find()){
int maxLength = Integer.valueOf(matcher.group(1);
}
試試這個。
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
*「檢查max_len是否爲模式」* - 這是什麼意思?是。*您的條款模式? – luk2302
基本上我有一個sting,它是「max_len [4]」不,我需要檢查sting是否包含單詞「max_len」 –
難道你不能只使用一個簡單的註冊教程爲Java?它應該像'max_len \ [(\ d)\]一樣簡單''我把它留給你如何在Java中使用該註冊表:) – xander