【问题标题】:Delete a NEL line break from String using Groovy?使用 Groovy 从字符串中删除 NEL 换行符?
【发布时间】:2017-06-12 21:09:58
【问题描述】:

我正在尝试删除从文件中获取的行中的所有换行符。 但是我无法删除NEL的行终止符,我发现\R Linebreak matcher Any Unicode linebreak sequence,相当于:

  • [\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]

下面是我的代码,所以使用一个简单的字符串,最后包含一个NEL,匹配器找不到断线,有人知道该怎么做吗?

import java.util.regex.Matcher
import java.util.regex.Pattern

class LineBreakDeleter {


    static void main (String []args){

                String line="hello";
                Pattern pattern = Pattern.compile(/\\R/);
                Matcher matcher = pattern.matcher(line);
                if (matcher.find())
                {
                    System.out.println("Found");
                }
        }
}

【问题讨论】:

标签: regex eclipse groovy matcher


【解决方案1】:

那是因为你的正则表达式是错误的。

在斜杠字符串中,反斜杠失去了它在字符串方面的特殊含义。所以/\\R/ 等于'\\\\R',因此您正在搜索一个反斜杠,后跟一个大写R。删除其中一个反斜杠或使用单引号或双引号创建字符串,您应该会找到匹配项。

【讨论】:

  • 谢谢,但是当我删除 1 个 backsalch 时,我得到了 Caught: java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 1 \R
  • 嗯,那是因为错误是正确的,而您没有正确阅读文档。 ;-) \R 在“Perl 构造 not 受此类支持:”一节中提到,因此没有这样的预定义字符类。只需使用您在问题中也提到的长显式版本。
  • 再次感谢我刚刚使用了长显式的,效果很好;)
猜你喜欢
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
相关资源
最近更新 更多