Мне нужно найти определенный шаблон в строке и извлечь из него подстроку.Например, строка:
{'Opening Cost P&L per store','Opening Costs Capital per store','Average Monthly Revenue','GROSS MARGIN %'}] = N:DB('Store Cost',
!Country and Region, DB('New Store Plan', !Country and Region,
!ID numbers, !Budget version, 'Retailer Type'), ATTRS('New Stores',
!New Stores, '}Map_}Link_New Store Plan_3CStore Cost'), DB('New Store Plan',
!Country and Region, !ID numbers, !Budget version, 'Size'),
DB('New Store Plan', !Country and Region, !ID numbers, !Budget version,
'Franchise/Corporate'), 'DATA')
Я должен искать:
DB('
только, а не другой шаблон, такой как S:DB('
или DB('}
.
Затем, найдя этошаблон Я должен взять текст в списке, который доступен после этого шаблона и только в кавычках, например,
DB('Metrics cube-HumanResource', !country, !Time, !gometric, !Metric Indicators), CONTINUE)
DB('Metrics cube-InternalProcess', !country, 'Total of Product', !Time, !gometric, !Metric Indicators), CONTINUE);
, тогда вывод будет:
1 - Metrics cube-HumanResource
2 - Metrics cube-InternalProcess
Это мой код.Но ничего не печатается:
public class StringRegex {
public static void main(String[] args) {
String str = "{'Opening Cost P&L per store','Opening Costs Capital per store','Average Monthly Revenue','GROSS MARGIN %'}] = N:DB('Store Cost', \n" +
" !Country and Region, DB('New Store Plan', !Country and Region, \n" +
" !ID numbers, !Budget version, 'Retailer Type'), ATTRS('New Stores', \n" +
" !New Stores, '}Map_}Link_New Store Plan_3CStore Cost'), DB('New Store Plan', \n" +
" !Country and Region, !ID numbers, !Budget version, 'Size'), \n" +
" DB('New Store Plan', !Country and Region, !ID numbers, !Budget version, \n" +
" 'Franchise/Corporate'), 'DATA')";
String[] strArray = str.split(",");
for(String s : strArray){
if(s.matches("DB\\('.+'")){
System.out.println(s);
}
}
}
}