需要java模式匹配方面的帮助吗
我有输入字符串作为需要java模式匹配方面的帮助吗,java,regex,Java,Regex,我有输入字符串作为 String str = "IN Param - {Parameter|String}{Parameter|String} Out Param - {Parameter Label|String}{Parameter Label2|String}"; 我应该可以得到 {参数|字符串}{参数|字符串} 从Param和 {参数标签|字符串}{参数标签2 |字符串} 从外面的Param 在Param中,我应该能够获得参数和字符串。如何在正则表达式匹配Java中实现这一点?通
String str = "IN Param - {Parameter|String}{Parameter|String} Out Param - {Parameter Label|String}{Parameter Label2|String}";
我应该可以得到
{参数|字符串}{参数|字符串}
从Param和
{参数标签|字符串}{参数标签2 |字符串}
从外面的Param
在Param中,我应该能够获得参数和字符串。如何在正则表达式匹配Java中实现这一点?通过组实现这一点 因此,正则表达式是:
"\\{(.*?)\\|(.*?)\\}"
Group1捕获参数
Group2捕获字符串
在这个正则表达式中,{(.*?)
表示将以{
开头、以{/code>结尾的0到n个字符进行匹配,并将结果存储在第1组中,不包括{
和{/code>。这种情况与{124?}
类似,但它将结果存储在第2组中
试试看在匹配Out Param
后,您想回到In Param
中吗?您是否可以显示一些代码,您可能已经尝试过了?regexplanet.com链接的加分。这将派上用场!中\\,(.*)的含义是什么regex@user900721
(dot)表示匹配任何字符。*
表示将0匹配到多个字符。*?
与*
类似,但仅限于第一次匹配。{
在正则表达式中有特殊含义。因此,我们需要使用“\`”来转义它。正则表达式非常简单。你会找到许多关于它的教程。*
但它仅限于第一次匹配。{
在正则表达式中具有特殊含义。{
因此我们需要使用“\``来转义它。.正则表达式非常{和|但是想要它们之间的那些字符我必须做什么?@Morpheus你需要使用Groups..正如我说的,上面的正则表达式将捕获组1和组2中的中间字符串..因此,如果m
是Matcher
对象,你可以使用m.Group(1)
和m.Group(1)
Pattern p = Pattern.compile("\\{([^|]+)\\|([^}]+)\\}");
Matcher m = p.matcher(str);
while (m.find()) {
String label = m.group(1);
String value = m.group(2);
// do what you need with them
}