首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java正则表达式可以在Linux上运行,但不能在Windows上运行

Java正则表达式可以在Linux上运行,但不能在Windows上运行
EN

Stack Overflow用户
提问于 2016-03-02 20:10:14
回答 1查看 643关注 0票数 1

我构建了i类名Scanner。这个类打开文件并对其应用三个正则表达式。

在我的Linux系统上,这三种模式都工作得很好。在Windows上只有两个,几个小时后我真的不知道为什么...

这是我的三个模式

代码语言:javascript
运行
复制
private static final Pattern TILE_PATTERN = Pattern.compile("<xyz:tile\\sfilename=\"(\\S+)\"");
private static final Pattern VALUE_PATTERN = Pattern.compile("<xyz:value\\sxyz:name=\"(\\S+)\"[\\sxyz:type=\"(\\S)\"]*>");
private static final Pattern IF_PATTERN = Pattern.compile("<xyz:if-visible\\sxyz:name=\"(\\S+)\">");

VALUE_PATTERNIF_PATTERN都没问题。TILE_PATTERN不工作...

这是我的方法:

代码语言:javascript
运行
复制
public static List<String> scanForTiles(TemplateModel template) {
    try (Stream<String> stream = Files.lines(template.getPath())) {
        List<String> includes = new ArrayList<>();
        stream.map(TILE_PATTERN::matcher)
            .flatMap(matcher -> {
                List<String> list = new ArrayList<>();
                while (matcher.find()) {
                    list.add(matcher.group(1));
                }
                return list.stream();
            })
            .forEach(includes::add);
        return includes;
    }catch (IOException e) {
    e.printStackTrace();
}
    return null;
}

我的模板示例代码:

代码语言:javascript
运行
复制
<!-- NOT ok -->
<xyz:tile filename="containers/mainLogin.html">
<!-- OK -->
<xyz:if-visible xyz:name=".variable">
EN

Stack Overflow用户

发布于 2016-03-02 20:26:07

linux和windows之间的显著区别在于新的代码行。在linux中,换行符是\n (换行符),在windows中,换行符由两个字符\r\n (回车符和换行符)表示。

此外,默认情况下,正则表达式在多行上不匹配,通常新行字符充当$或结束行匹配器,这可能是正则表达式在两个操作系统中表现不同的原因之一。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35746860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档