我遇到了一个我觉得非常有趣的问题.我正在使用正则表达式对文本文件进行一些基本的解析,并且在匹配此行时它总是会冻结
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)
好吧,我发现如果我修改正则表达式(添加\\\\到最后一组): …
我正在翻新使用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)