求助 正则表达式相关的问题 高手看一下

cmchina7 2014-12-06 02:30:54
我现在有个类似这样的字符串asdsd[one]sakds[two]sdsd
我现在想把[one]和[two]给匹配出来 one和two的内容不确定;
也就是说我只能根据 [任意内容] 来匹配
匹配方括号我可以用String reg= ":\\x5b.*\\x5d";来匹配 但是现在的问题是 用这个reg匹配的结果是这样的[one]sakds[two]
但是我想要的结果是[one]和[two]
哪位大神帮帮忙 看怎么破!
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cmchina7 2014-12-06
  • 打赏
  • 举报
回复
引用 4 楼 cumtwyc 的回复:
Pattern pattern = Pattern.compile("\\[.*?\\]");这里面的?就是懒惰匹配。意思就是匹配尽可能少但是满足模式的字符串。 在asdsd[one]sakds[two]sdsd中满足条件的有两个一个是[one],一个是[one]sakds[two]。使用懒惰模式的话,从前向后扫描的过程中碰到第一个满足条件就会终止。如果不使用懒惰模式,它会继续向后搜索,这样就返回了第二个。
引用 1 楼 Inhibitory 的回复:
import java.util.regex.*;

public class Test {
    public static void main(String[] args) {
        String str = "asdsd[one]sakds[two]sdsd";
        Pattern pattern = Pattern.compile("\\[.*?\\]");
        Matcher matcher = pattern.matcher(str);

        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}
输出
[one]
[two]
谢谢二位!
wyc_ 2014-12-06
  • 打赏
  • 举报
回复
Pattern pattern = Pattern.compile("\\[.*?\\]");这里面的?就是懒惰匹配。意思就是匹配尽可能少但是满足模式的字符串。 在asdsd[one]sakds[two]sdsd中满足条件的有两个一个是[one],一个是[one]sakds[two]。使用懒惰模式的话,从前向后扫描的过程中碰到第一个满足条件就会终止。如果不使用懒惰模式,它会继续向后搜索,这样就返回了第二个。
cmchina7 2014-12-06
  • 打赏
  • 举报
回复
引用 2 楼 cumtwyc 的回复:
使用懒惰匹配
什么是懒惰匹配啊?
wyc_ 2014-12-06
  • 打赏
  • 举报
回复
使用懒惰匹配
Inhibitory 2014-12-06
  • 打赏
  • 举报
回复
import java.util.regex.*;

public class Test {
    public static void main(String[] args) {
        String str = "asdsd[one]sakds[two]sdsd";
        Pattern pattern = Pattern.compile("\\[.*?\\]");
        Matcher matcher = pattern.matcher(str);

        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}
输出
[one]
[two]

50,545

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧