如何捕获String表达式并仅替换它的一部分?

时间:2015-05-23 12:04:09

标签: java regex eclipse

我想捕获以下字符串表达式:

匹配

 - MyUtilClass.cast(MyClass.class, <-- including the space after comma
 - MyUtilClass.cast(MyClass2.class, <-- including the space after comma
 - MyUtilClass.cast(MyClass3.class, <-- including the space after comma

将匹配替换为:

 - MyUtilClass.uncheckedCast(
 - MyUtilClass.uncheckedCast(
 - MyUtilClass.uncheckedCast(

结果:

- MyUtilClass.uncheckedCast(query.getResultList());
- MyUtilClass.uncheckedCast(q.getResultList());
- MyUtilClass.uncheckedCast(rootQuery.getResultList());

我正在使用Eclipse IDE。

谢谢

3 个答案:

答案 0 :(得分:1)

REGEX:

- MyUtilClass\.cast\(MyClass[23]?\.class,\s*

替换为:

- MyUtilClass.uncheckedCast(

答案 1 :(得分:1)

您可以使用以下内容进行匹配:

MyUtilClass[.]cast[(]MyClass\d*[.]class,\s* 

或如果您只有MyClass, MyClass2 and MyClass3,请使用以下

MyUtilClass[.]cast[(]MyClass[23]?[.]class,\s* 

并替换为以下内容:

MyUtilClass.uncheckedCast(

请参阅DEMO

答案 2 :(得分:0)

匹配"MyUtilClass.cast(AnyClassName.class, "并将其替换为"MyUtilClass.uncheckedCast("

String regex = Pattern.quote("MyUtilClass.cast(") + "[a-zA-Z_$][a-zA-Z\\d_$]*"
        + Pattern.quote(".class, ");

s = s.replaceAll(regex, "MyUtilClass.uncheckedCast(");