正则表达式以获取Java中两个字符之间的文本
我有这个字符串:正则表达式以获取Java中两个字符之间的文本,java,regex,Java,Regex,我有这个字符串: Test 123 ${tag1} lorem ipsum ${tag2} ${tag3; tag4} ${tag5; tag6} dixit lorem ${tag7} dixit lorem ${tag8}. 我希望使用正则表达式只选择${tag;tag}之间的文本 我试过这个: \$\{(.*?)(; )(.*?)} 但我不能得到我所期望的。 有什么建议吗? 如果${…;…}中的内部文本不能包含{、}和,请感谢使用否定字符类解决方案: \$\{([^;{}]*);\s*
Test 123 ${tag1} lorem ipsum ${tag2} ${tag3; tag4} ${tag5; tag6} dixit lorem ${tag7} dixit lorem ${tag8}.
我希望使用正则表达式只选择${tag;tag}之间的文本
我试过这个:
\$\{(.*?)(; )(.*?)}
但我不能得到我所期望的。
有什么建议吗?
如果
${…;…}
中的内部文本不能包含{
、}
和,请感谢代码>使用否定字符类解决方案:
\$\{([^;{}]*);\s*([^{};]*)}
看
如果计划只匹配单词字符,您可以将其简化为
\$\{(\w+)\s*;\s*(\w+)}
看
详细信息
\$\{
-a${
子字符串
([^;{}]*)
-第1组:除;
、{
和}
((\w+
将匹配1个或多个单词字符、字母、数字、下划线)以外的任何0+字符
\s*;\s*
-a;
包含0+空格
([^;{}]*)
-第2组:除;
、{
和}
以外的任何0+字符
}
-a}
字符
:
输出:
${tag3; tag4}
tag3
tag4
=== END OF MATCH ===
${tag5; tag6}
tag5
tag6
=== END OF MATCH ===
非常感谢你!是工作和解释是可怕的!再次感谢。
${tag3; tag4}
tag3
tag4
=== END OF MATCH ===
${tag5; tag6}
tag5
tag6
=== END OF MATCH ===