Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何知道这个正则表达式代表什么_Java_Regex - Fatal编程技术网

Java 如何知道这个正则表达式代表什么

Java 如何知道这个正则表达式代表什么,java,regex,Java,Regex,我正在维护一些代码,我看到了一个正则表达式,如someString.matches(“\\$\\{.*}”)我知道java中的反斜杠正在转义反斜杠。$表示行尾,{}内的表达式表示所需的字符串所以我相信(尽管现在我知道我错了)这个正则表达式正在过滤字符串,这些字符串的末尾有点,并且是这样的格式:看起来是.a.beautiful.day但我错了。有人能告诉我这个正则表达式到底能解析什么吗 反斜杠字符(\)转义美元符号($)和大括号({)以使它们不被视为特殊字符,因此此正则表达式将匹配紧跟大括号的文字

我正在维护一些代码,我看到了一个正则表达式,如
someString.matches(“\\$\\{.*}”)

我知道java中的反斜杠正在转义反斜杠。$表示行尾,{}内的表达式表示所需的字符串
所以我相信(尽管现在我知道我错了)这个正则表达式正在过滤字符串,这些字符串的末尾有点,并且是这样的格式:
看起来是.a.beautiful.day
但我错了。有人能告诉我这个正则表达式到底能解析什么吗

反斜杠字符(
\
)转义美元符号(
$
)和大括号(
{
)以使它们不被视为特殊字符,因此此正则表达式将匹配紧跟大括号的文字美元符号,后面紧跟大括号,后面紧跟任意数字的任何字符,后面紧跟大括号(

一些与此匹配的示例:

  • ${9.00}
  • ${}
  • ${{{{{{{{{{{{{{}
  • ${}}}}}}}}}}}}}}

Java编译器接受这个字符串
“\\$\\{.*}”
并用单斜杠替换双斜杠,因此regexp引擎可以看到:

\$\{.*}
这意味着一个字符串以美元符号
$
开头,后跟一系列零个或多个字符的大括号

编写类似表达式的更好方法如下:

\$\{[^}]*}
(您需要为Java编译器转义反斜杠)。此表达式将在看到第一个闭合大括号后停止,并避免

对字符串进行编码

\$\{.*}
因为Java编译器在到达正则表达式库之前解释
\\


当用作正则表达式时,它匹配一个literal
${
后跟任意数量的非换行字符,直到最后一个literal
}

也许你可以将它粘贴到一个文本中?你也可以试试@dasblinkenlight:ooooooo,这个解释程序很好:)我同意。谢谢你的解释@dasblinkenlight谢谢,这对我解释得最好。
\$\{.*}