Java正则表达式在非注释中查找特殊字符

Java正则表达式在非注释中查找特殊字符,java,regex,eclipse,replace,Java,Regex,Eclipse,Replace,在我将工作区编码切换到UTF-8并返回(Windows ISO)后,我所有的(德语)UMLAUT都被转换为èè½ 我想用静态引用替换Eclipse Find/replace中的所有èè½ public interface StringConstants { public static final String ae = "\u00E4"; public static final String oe = "\u00F6"; public static final Strin

在我将工作区编码切换到UTF-8并返回(Windows ISO)后,我所有的(德语)UMLAUT都被转换为èè½

我想用静态引用替换Eclipse Find/replace中的所有èè½

public interface StringConstants {
    public static final String ae = "\u00E4";
    public static final String oe = "\u00F6";
    public static final String ue = "\u00FC";
    public static final String AE = "\u00C4";
    public static final String OE = "\u00D6";
    public static final String UE = "\u00DC";
    public static final String ss = "\u00DF";
}
我不想替换所有的评论,因为没有人关心它们

到目前为止,我还可以用你的

Find: ^[^//](.*?)(�)+

Replacement: $1" + StringConstants.ue + "
它将省略CVS注释

// �ber
但它不适用于前面有空格或代码的注释以及blockcomments。 e、 g:

doSomething();//blablaïïï½ber/这个怎么样:

^(?:(?!//|(?:\*\s)).)*(�)+.*
在这里,您需要将gourp 1(唯一的组)替换为所需的文本。
正则表达式搜索“ëë½”前面没有“//”或“*\s”的行。

我猜您不希望为版本控制系统转换注释。然而,仍然要考虑这样做,以保持代码阅读质量(=不误导读者,这是错误的编码)。并编写一个文件扫描工具,识别所有非7位ASCII文本。人们肯定会感到更安全。P.S.UTF-8是一个很好的选择。假设您仍然有原始源文件,为什么不简单地用类似于
Notepad++
的东西打开它们,并在没有BOM的情况下另存为
UTF-8
?你只需要做一次,而且你所有的德语字母都应该是完整的。嗯,你也应该在注释中替换德语字母。我不知道其他人的情况,但我确实关心注释(
;)。那么您就不需要这样一个硬的regexp了。一旦我改为UTF-8,我就会收到编译警告:
警告:用于编码UTF-8的不可映射字符/?ber
@mvp:如果这么简单的话。。。我有1800+个课程,其中一些课程需要重新储存1000+LOC(一些课程需要3000+LOC)。有了replace,我只需要重新制作5个类(grep只在那里向我展示了特殊的字符)� 启用UTF-8时…:/使用UTF-8编译项目时,某些JavaScript函数停止工作(例如:
^(?:(?!//|(?:\*\s)).)*(�)+.*