在模式中使用变量

时间:2013-06-05 12:29:25

标签: java regex pattern-matching

所以我需要在另外两个词之间说一句话;我正在使用模式和匹配器。

Pattern p = Pattern.compile("Hello(.*?)GoodBye");
Matcher m = p.matcher(line);

在这个例子中我得到了Hello和Goodbye之间的单词并且它有效。 我想要做的是替换Hello和GoodBye bye变量,例如:

String StartDelemiter = "Hello";
String EndDelemiter = "GoodBye";

如何在Pattern p = Pattern.compile(---)中写出来;我试过:

Pattern p = Pattern.compile( "{ "+StartDelemiter +" (.*?) "+EndDelemiter+" }"  );

但应用程序崩溃!!

1 个答案:

答案 0 :(得分:3)

您需要使用反斜杠转义{},例如:

Pattern p = Pattern.compile( "\\{ "+StartDelemiter +" (.*?) "+EndDelemiter+" \\}"  );

花括号是正则表达式量词

<pattern>{n}    Match exactly n times 
<pattern>{n,}   Match at least n times 
<pattern>{n,m}  Match at least n but not more than m times