Javaを使用して正規表現と比較しながら、一致しないデータを削除しようとしています。そして私の要求はこのようなものです。私の正規表現は次のとおりです。
([A-Z]{5}[0-9]{4}[A-Z])(XM|XD|EM|ED)([0-9]{3})(_PRA_)([0-9]{3})
次のような文字列を受け入れる必要があります。
SHIVA1234AXM123_PRA_123
しかし、この場合、私が何かaaSHIVA1234AXM123_PRA_123aa
(または)SHIVA1234AXccccM123_PRA_123
のように与えると、このメソッドはこのようにaaaa
(または)与える必要がありcccc
ます。次のコードを試しました:
public class ExpressionDemo {
public static void main(String[] args) {
String regex = "([A-Z]{5}[0-9]{4}[A-Z])(XM|XD|EM|ED)([0-9]{3})(_PRA_)([0-9]{3})";
Pattern p = Pattern.compile(regex);
String str="SHIVA1234AXM123_PRA_123";
Matcher m = p.matcher(str);
System.out.println(m.groupCount());
for(int i=1;i<=m.groupCount();i++)
{
int start=0;
int end=0;
System.out.println("count "+i);
if(m.lookingAt())
{
System.out.println(m.group(i));
System.out.println("start of group"+m.start(i));
System.out.println("end of group"+m.end(i));
start=m.start(i);
end=m.end(i);
m.reset();
}
else
{
System.out.println("ELSE");
System.out.println(start);
System.out.println(end);
}
}
}
}
これは正の場合ですが、偽の場合にはこれが必要です。そして、それはどの式でも一般的でなければなりません--->文字列。