正则表达式怎么匹配除了单引号外的字符?

广寒月蛮兔 河北地质大学 2017-12-04 10:16:59
java我想匹配字符串里面的单引号标记的字符串
比如:String str = "sh -c 'ls / -lh' 232 'l2 / -lh' ";
匹配输出:'ls / -lh'和'l2 / -lh';
Pattern pattern = Pattern.compile("['][\\s\\S^']*[']");
Matcher matcher = pattern.matcher(str);
打印出来却是:'ls / -lh' 232 'l2 / -lh';
...全文
564 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复

	String str="sh -c 'ls / -lh' 232 'l2 / -lh'";
		String regex="'[^']*'";
		Matcher m=Pattern.compile(regex, Pattern.MULTILINE).matcher(str);
		List<String> list=new ArrayList<String>();
		while(m.find()){
			list.add(m.group());
		}
		System.out.println(list);
  • 打赏
  • 举报
回复
xiaovhao 2017-12-04
引用 1 楼 u014038116 的回复:
Pattern pattern = Pattern.compile("['][\\s\\S^']*?\\w{1}'");
Pattern pattern = Pattern.compile("['][\\s\\S^']*?'"); 这个好点
  • 打赏
  • 举报
回复
xiaovhao 2017-12-04
Pattern pattern = Pattern.compile("['][\\s\\S^']*?\\w{1}'");
  • 打赏
  • 举报
回复
xiaovhao 2017-12-04
引用 4 楼 fring2012 的回复:
[quote=引用 2 楼 u014038116 的回复:] [quote=引用 1 楼 u014038116 的回复:] Pattern pattern = Pattern.compile("['][\\s\\S^']*?\\w{1}'");
Pattern pattern = Pattern.compile("['][\\s\\S^']*?'"); 这个好点[/quote]为什么加个问号就行了[/quote] 你可以看下正则的贪婪匹配和非贪婪匹配
  • 打赏
  • 举报
回复
广寒月蛮兔 2017-12-04
引用 2 楼 u014038116 的回复:
[quote=引用 1 楼 u014038116 的回复:] Pattern pattern = Pattern.compile("['][\\s\\S^']*?\\w{1}'");
Pattern pattern = Pattern.compile("['][\\s\\S^']*?'"); 这个好点[/quote]为什么加个问号就行了
  • 打赏
  • 举报
回复
相关推荐
发帖
Web 开发
加入

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2017-12-04 10:16
社区公告
暂无公告