Po delsim premysleni to vyresim asi pres dva regularni vyrazy:
private static Pattern patternRow = Pattern.compile("^.*$", Pattern.
MULTILINE);
private static Pattern patternCheckRow = Pattern.compile(
"^[a-zA-Z][a-zA-Z0-9\\.\\_\\-]*\\s*=.*$");
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("organizationlist.view.caption = %organization").append(
"\n");
sb.append("organizationlist.provider.caption =
%organizationlist.view.caption").append("\n");
sb.append("payrollentityincollection.view.caption = Zařazení
mzdové entity do kolekce").append("\n");
sb.append("payrollentitycollection.view.caption = Kolekce mzdových
entit").append("\n");
sb.append("payrollentitysubgroup.view.caption = Podskupiny
mzdových entit").append("\n");
Matcher m = patternRow.matcher(sb.toString());
while (m.find()) {
String row = m.group();
if (!patternCheckRow.matcher(row).matches()) {
System.out.println("Chyba: " + row + " start = " +
m.start() + " end = " + m.end());
}
}
}
> Mam soubor formatu:
> ....
> organizationlist.view.caption = %organization
> organizationlist.provider.caption = %organizationlist.view.caption
> payrollentityincollection.view.caption = Zařazení mzdové entity do
kolekce
> payrollentitycollection.view.caption Kolekce mzdových entit
> payrollentitysubgroup.view.caption = Podskupiny mzdových entit
> ...
>
> jde tedy priblizne o format Properties souboru (klic = hodnota), pricemz
> klic ma povolene znaky [a-z][a-z0-9\.\-\_]* pak musi nasledovat rovnitko
a
> pak libovolne znaky az do konce radku (vcetne rovnitka)
> V uvedenem vyseku je videt, ze radek 4 porusuje predepsane pravidlo
(chybi
> rovnitko).
>
> Otazka zni: lze regularnim vyrazem dohledat radky ktere nevyhovuji
> predpisu ^\s*[a-z][a-z0-9\.\-\_]*\s*=.*$ tedy v podstate znegovat
> regularni vyraz. U grepu je to tusim "grep -v expression"
>
> Ve vysledku bych potreboval start index a end index znaku radku (index
> znaku v ramci souboru), ktery nevyhovuje predpisu.