[英]Using pattern matching in Java
我有一些具有模式的字符串
word(word-number, word-number)
我想使用正則表達式來提取3個單詞和2個數字。
我目前正在使用它
String pattern = "(.+?) (\\() (.+?)(-) (\\d+?) (,) (.+?) (-) (\\d+?) (\\))";
String a = string.replaceAll(pattern, "$1");
String b = string.replaceAll(pattern, "$3");
String c = string.replaceAll(pattern, "$5");
String d = string.replaceAll(pattern, "$7");
String e = string.replaceAll(pattern, "$9");
但無濟於事任何幫助將不勝感激。
匹配word(word-number, word-number)
很簡單
String regex = "(\\D+)\\((\\D+)-(\\d+), (\\D+)-(\\d+)\\)";
您正在使用多余的空間並捕獲您的群組。
現在,要提取每個捕獲組,請使用Pattern
API。
Matcher m = Pattern.compile(regex).matcher(string);
m.matches();
String a = m.group(1), b = m.group(2), c = m.group(3), d = m.group(4), e = m.group(5);
您可以像@Marko所說的那樣提取捕獲組。
然后稍微重新排列正則表達式。
# "^(.+?)\\((.+?)-(\\d+?),\\s*(.+?)-(\\d+?)\\)$"
^ # BOL
( .+? ) # (1), word
\( # '('
( .+? ) # (2), word
- # '-'
( \d+? ) # (3), number
, \s* # ', '
( .+? ) # (4), word
- # '-
( \d+? ) # (5), numbr
\) # ')'
$ # EOL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.