java - 在模式中使用变量

标签 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+" }"  );

但是应用程序崩溃了!!

最佳答案

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

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

关于java - 在模式中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16939987/

相关文章:

java - 如何使用字符串有效地管理内存?

java - 基元和对象类型的方法重载

javascript - 我怎样才能使 npm Jest 脚本跨平台而不显得疯狂?

haskell - Haskell 守卫/模式匹配什么时候被认为是不详尽的?

java - 在 jcombobox 中选择项目时显示 jlabel

java - 如何为独立的java应用程序存储简单数据

regex - 特殊字符的 VBA 正则表达式

Java如何根据输入检查多个正则表达式模式?

scala - Scala 中使用 TypeTag 在类型层次结构上进行模式匹配的惯用方法是什么?

xml - 与多行 XML 案例匹配的模式