正如所描述的標題,正則表達式應提供給定字符串,字符串前綴(可選)和字符串後綴(可選)的提取信息的目的如何使正則表達式允許可選的前綴和後綴提取
這樣
prefix_group_1_suffix
回報group_1
時的前綴是 'prefix_' 和後綴是_suffix
prefix_group_1
回報group_1
時的前綴是 'prefix_' 和後綴null
< - 我的代碼無法處理這種情況
group_1_suffix
回報group_1
時前綴爲「空」和後綴是_suffix
group_1
回報group_1
時前綴爲「空」和後綴是null
< - 我的代碼不能處理這種情況
這裏是我的代碼,但是我發現它不工作時
String itemName = "";
String prefix = "TEST_";
String suffix = "";
String itemString = prefix + "item_1" + suffix;
String prefix_quote = "".equals(prefix) ? "" : Pattern.quote(prefix);
String suffix_quote = "".equals(suffix) ? "" : Pattern.quote(suffix);
String regex = prefix_quote + "(.*?)" + suffix_quote;
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(itemString);
while (matcher.find()) {
itemName = matcher.item(1);
break;
}
System.out.println("itemString '"+itemString+"'");
System.out.println("Prefix quote '"+prefix_quote+"'");
System.out.println("Suffix quote '"+suffix_quote+"'");
System.out.println("regex '"+regex+"'");
System.out.println("itemName is '"+itemName+"'");
,這裏是輸出
itemString 'TEST_item_1'
Prefix quote '\QTEST_\E'
Suffix quote ''
regex '\QTEST_\E(.*?)'
itemName is ''
但上面的代碼工作以及與其他兩個條件
你看的正則表達式的任何教程? – JoelFan
那麼考慮兩種情況,prefix_group_1和group_1_suffix。我相信前綴和後綴可以是任何文本值。然後這兩種模式都與A_B_C相同。系統如何說如果A是前綴,B_C是缺少後綴的數據,或者C是後綴爲A_B的後綴,並且缺少前綴。該系統需要更多信息。另外,如果你的文本是用下劃線格式化的,那麼爲什麼你需要使用正則表達式的原因是什麼?爲什麼不把它解析爲標記。 – Gautam
你爲什麼要重複比賽?我理解你的問題的方式是,每個字符串只能有(最多).one匹配。 –