可以在Java中的正则表达式中传递引用吗?

时间:2016-03-23 17:02:34

标签: regex reference quantifiers

我有一个编程练习,我们必须编写一个格式方法,将参数作为String,作为我们想要格式化的文本输入,以及一个整数,作为我们想要的行的长度。

我们也有特定的规则,其中之一是:如果一个单词超过了所需的长度,它应该单独排成一行。

这样做的一个简单方法是使用Regex表达式搜索一系列至少长度且可能更多的非空白字符,并将其自身替换为两个\在每一边......

也许代码更清晰:让我们想象一下我们想要的行长度是10

  String s = line.replaceAll("([ \t])(\\S{10,})([ \t])", "\n$2\n");
  System.out.println(s);

这实际上很好用。

我的问题是行长度应该作为参数传递给format方法;所以我可以引用这个参数的唯一方法是使用它的引用。例如:

public static String format(String s,int length ){...

//缺少东西

String s = line.replaceAll(“([\ t])(\ S { length ,})([\ t])”,“\ n $ 2 \ n”); 的System.out.println(一个或多个);

但在这种情况下,它将返回错误:PatternSyntaxException

我的问题是:是否有任何方法可以使用对量词(而不是数字)的引用作为我们想要匹配的出现次数的参数?看起来它真的很有用,我很惊讶它似乎没有用。它也不像很多人遇到这个问题。

1 个答案:

答案 0 :(得分:2)

试试这个

String s = line.replaceAll("([ \t])(\S{"+length+",})([ \t])", "\n$2\n");
System.out.println(s);