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

广寒月蛮兔 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';
...全文
935 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

	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]为什么加个问号就行了

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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