Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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,我有输入字符串作为 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
}