小编Kam*_*abo的帖子

当匹配包含\n的行时,Java Pattern.matcher()会冻结

我遇到了一个我觉得非常有趣的问题.我正在使用正则表达式对文本文件进行一些基本的解析,并且在匹配此行时它总是会冻结

ftrect 0.7031 57.0313 9.8561 55.5313 "FREIGABE \nQ09_SV01"
Run Code Online (Sandbox Code Playgroud)

没有例外; 该程序只是挂起.我正在发布重新创建情况的程序片段; 评论的是可能的标准情况,但另一个是有问题的.如果删除\n它可以工作,但这些解析过的文件来自"blackbox"系统.

我当然可以做一个解决方法,我发现有趣的是它实际上已经冻结,并希望有人可以解释发生了什么.我试过JDK6u22和JDK7u21 ......

public static Pattern FTRECT_PATTERN = Pattern.compile(
    "\\s*([\\w]+)?\\:?\\s*ftrect\\s+((\\d*\\.?\\d*\\s?)+)\\s*\"?([\\w\\s\\.\\%\\/\\=]*)?\"?\\s*"
);

public static void main(String[] args) {

//  Matcher m = FTRECT_PATTERN.matcher( "FOX_BACKGROUND: ftrect 46.1719 18.0556 54.8633 16.5556 \"Schicht\" " );
    Matcher m = FTRECT_PATTERN.matcher( "ftrect 0.7031 57.0313 9.8561 55.5313 \"FREIGABE \\nQ09_SV01\"" );
    System.out.println( m.matches() );

    for (int i = 0; i <= m.groupCount(); i++) {
        String string = m.group( i );
        System.out.println( string );
    }
}
Run Code Online (Sandbox Code Playgroud)

好吧,我发现如果我修改正则表达式(添加\\\\到最后一组): …

java regex

7
推荐指数
1
解决办法
3185
查看次数

Logback的奇怪行为 - 空文件

我正在翻新使用logback的旧系统,一些简单的东西(3个appenders,2个logger).现在在下一版本的系统中(或重新实现,因为之前的版本被笔记本和备份窃取,只有配置文件和二进制文件已经在机器人上),我使用相同的配置文件,但所有日志文件都保持为空.

奇怪的是,它实际上是通过给定的模式创建了正确的文件和文件夹,因此它肯定会对配置文件执行某些操作.除此之外,记录器和追加器根本不起作用.

我还尝试使用我在示例中找到的各种其他配置文件 - 甚至没有一个工作,所以我怀疑使用的库和logback之间存在一些冲突.我试图谷歌它,但没有发现任何相关或工作.

有没有人到过(或希望通过)这样的问题?或者请指出错误的一行......

先谢谢......卡米尔

下一代码显示初始化:

public static final String LOGGER_CONFIG_FILE = "hacs.logger.conf";
public static final String LOGGER_CONFIG_FILE_DEFAULT = "./conf/logconf.xml";

    public static void main( String[] args ) {

        File configurationFile = new File(HACSProperties.instance().getProperty(LOGGER_CONFIG_FILE, LOGGER_CONFIG_FILE_DEFAULT));

        if( configurationFile.exists() ){
            LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
        context.reset(); // When this is commented, logback works in some default configuration

            try {
            JoranConfigurator configurator = new JoranConfigurator();
        configurator.setContext(context);

        configurator.doConfigure( LOGGER_CONFIG_FILE_DEFAULT );
        System.out.println("Logger successfully configured..");

        Logger log = LoggerFactory.getLogger("analytics");
        log.info( "Please appear in file" ); …
Run Code Online (Sandbox Code Playgroud)

java logging logback

5
推荐指数
0
解决办法
1212
查看次数

标签 统计

java ×2

logback ×1

logging ×1

regex ×1