Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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,我试图用Java中的正则表达式解析出以下内容 我的测试字符串由“${}”中的字符串组成,例如${xyz}:${abc}”中的ex:“Test${template}”中的字符串 我试图使用(\$\{[^\}]+\})形式的正则表达式来匹配它。当前正则表达式与测试字符串中的任何内容都不匹配 如果我添加(.*?)(\$\{[^\}]+\})(.*?以使其不灵活,那么在提供我想要匹配的任何内容时,它实际上是不一致的 我的正则表达式有什么问题?如何修复它?您可能还需要避开大括号: jcomeau@intr

我试图用Java中的正则表达式解析出以下内容

我的测试字符串由
“${}”
中的字符串组成,例如${xyz}:${abc}”中的ex:
“Test${template}”中的字符串

我试图使用
(\$\{[^\}]+\})
形式的正则表达式来匹配它。当前正则表达式与测试字符串中的任何内容都不匹配

如果我添加
(.*?)(\$\{[^\}]+\})(.*?
以使其不灵活,那么在提供我想要匹配的任何内容时,它实际上是不一致的


我的正则表达式有什么问题?如何修复它?

您可能还需要避开大括号:

jcomeau@intrepid:/usr/src/clusterFix$ python
Python 2.6.7 (r267:88850, Jun 13 2011, 22:03:32) 
[GCC 4.6.1 20110608 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> s = 'Test ${template} in ${xyz} : ${abc}'
>>> re.compile('\$\{[^}]+\}').findall(s)
['${template}', '${xyz}', '${abc}']

您可能还必须避开大括号:

jcomeau@intrepid:/usr/src/clusterFix$ python
Python 2.6.7 (r267:88850, Jun 13 2011, 22:03:32) 
[GCC 4.6.1 20110608 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> s = 'Test ${template} in ${xyz} : ${abc}'
>>> re.compile('\$\{[^}]+\}').findall(s)
['${template}', '${xyz}', '${abc}']

大多数时候,当有人问正则表达式问题时,我要求他们至少考虑一下:


大多数时候,当有人问正则表达式问题时,我要求他们至少考虑一下:

产出:

${template}
${xyz}
${abc}
产出:

${template}
${xyz}
${abc}

一刀还不够。你需要两条斜线

试试这个正则表达式:

\\$\\{.+\\}
它检查文本周围有${和}的字符串。这将过滤掉空白字符串(
${}
)和任何未正确关闭的内容


如果要检查前后文本,请尝试
+\\$\\{.+\}.+

一个斜杠是不够的。你需要两条斜线

试试这个正则表达式:

\\$\\{.+\\}
它检查文本周围有${和}的字符串。这将过滤掉空白字符串(
${}
)和任何未正确关闭的内容


如果您想检查前后文本,请尝试
+\$\\{.+\}.+

我确实跳过了$和花括号。例如“(.*?)(\$\{[^\}]+\})(.*?”)您可以显示准备运行的示例代码吗?@Sachin:“花括号”对我来说是新的:)您的正则表达式在JavaScript中工作得很好,因此,这可能是一个转义问题。我确实转义了$和花括号。像这样“(.*?(\$\{[^\}]+\})(.*?”)您可以显示准备运行的示例代码吗?@Sachin:“花括号”对我来说是新的:)您的正则表达式在JavaScript中运行良好,因此这可能是一个转义问题
\\$\\{.+\\}