Java 如何提供正则表达式进行匹配$$

Java 如何提供正则表达式进行匹配$$,java,regex,Java,Regex,我有String str=“$$\\frac{6}{8}$”我希望使用以“$$”开头并以“$$”结尾的字符串进行匹配 如何为此编写正则表达式?使用此正则表达式字符串: "^$$.*$$$" ^将表达式锚定到匹配字符串的开头,最后一个$将表达式锚定到结尾。所有其他$字符都是按字面理解的。尝试使用正则表达式: ^\$\$.*\$\$$ Java中的哪一个将是: ^\\$\\$.*\\$\\$$ $是用作结束锚的正则表达式元字符。要表示文字$,需要使用反斜杠\对其进行转义 在Java中,是字符串

我有
String str=“$$\\frac{6}{8}$”我希望使用以“$$”开头并以“$$”结尾的字符串进行匹配

如何为此编写正则表达式?

使用此正则表达式字符串:

"^$$.*$$$"
^
将表达式锚定到匹配字符串的开头,最后一个
$
将表达式锚定到结尾。所有其他
$
字符都是按字面理解的。

尝试使用正则表达式:

^\$\$.*\$\$$
Java中的哪一个将是:

^\\$\\$.*\\$\\$$
$
是用作结束锚的正则表达式元字符。要表示文字
$
,需要使用反斜杠
\
对其进行转义

在Java中,是字符串中的转义字符,也是正则表达式中的转义字符。因此,要使
\
到达正则表达式引擎,您需要在字符串中包含
\


您可能想要这样的东西:

final String str = "$$\\frac{6}{8}$$";
final String latex = "A display math formula " + str + " and once again " + str + " and another one " + "$$42.$$";
final Pattern pattern = Pattern.compile("\\$\\$([^$]|\\$[^$])+\\$\\$");
final Matcher m = pattern.matcher(latex);
while (m.find()) {
    System.out.println(m.group());
}

它可以工作,只是它匹配从第一个$$到最后一个$$的所有内容。此外,我看不出锚的原因。像
\$\$.*?\$\$
这样的东西可能会更好。@maaartinus:我想你没有完全阅读这个问题。我想使用以“$$”开头并以“$$”结尾的字符串进行匹配,当我们定义“匹配”的含义与
Matcher.matches()的含义相同时,就不需要锚定了。当我们以不同的方式定义它时……除了出现在正则表达式最末尾的一个之外,健全的正则表达式解析器不应该将任何
$
视为特殊的。