我有一個字符串包含例如。 1a2b。數字是1到9,字母(a | b)是常數。我想要一個正則表達式來查找'1a'和'2b',其中任何一個組都是可選的。正則表達式 - 可選地捕獲2組
我有這個...
String description = "bla bla bla: 1a2b more bla bla bla";
Pattern pattern = Pattern.compile("([1-9]a)([1-9]b)");
Matcher matcher = pattern.matcher(description);
if (matcher.find()) {
System.out.println(" group1: " + matcher.group(1));
System.out.println(" group2: " + matcher.group(2));
} else {
System.out.println("no match");
}
其輸出
group1: 1a
group2: 2b
如果我要麼組仍正常工作之後添加?
。如果在BOTH之後添加?
,它仍然匹配,但是兩個組都返回null。
怎樣使這兩個羣體可選的,所以它將匹配
案例1: 「喇嘛1A喇嘛」
案例2: 「喇嘛2B喇嘛」
案例3:「喇嘛1a2b bla「 ?
你試過嗎?''' –
只是一個簡單的問題:爲什麼不使用'([1-9]?)([ab])'?你說(a)和(b)是恆定的,所以只有這個數字可以不存在 –
一,其他或兩者:'([1-9] a)|([1-9] b)|([1- 9] a)([1-9] b)' – Shloim