求问正则表达式怎么写?

trium_KW 2016-07-23 11:57:15
如何对满足以下条件的字符序列撰写相匹配的正则表达式:
1. 包含且仅包含字母a, b, c, d中的一个或多个
2. 长度大于零
2. a至少出现一次
3. c至多出现一次
4. d恰好出现3次
5. 各个字母的出现次序没有限制

多谢!
...全文
270 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
豆腐花发 2016-08-06
  • 打赏
  • 举报
回复
麻痹。一分都没有
rickylin86 2016-07-27
  • 打赏
  • 举报
回复

String regex = "^(?=[abcd]+$)(?=.*?a)(?=[^c]*?c?[^c]*$)(?=[^d]*?d[^d]*?d[^d]*d[^d]*$).+$";
豆腐花发 2016-07-27
  • 打赏
  • 举报
回复
/a+b*c+d{3,}/
trium_KW 2016-07-26
  • 打赏
  • 举报
回复
rickylin86您好,还是不太对啊,"adddc"就不行
trium_KW 2016-07-25
  • 打赏
  • 举报
回复
rickylin86您好,您的回答没有满足对字母b的要求(虽然没有提,意思就是字母b可能有零个或多个),但我尝试把content的值换成"cdadd"打印的值就会变成false。还有您能否详细解释一下这个正则表达式的思路吗?谢谢
rickylin86 2016-07-25
  • 打赏
  • 举报
回复

String regex = "^(?=[abcd]+$)(?=.*?a)(?=[^c]*?c?[^c]+$)(?=[^d]*?d[^d]*?d[^d]*d[^d]*$).+$";
rickylin86 2016-07-25
  • 打赏
  • 举报
回复

String regex = "^(?=[abcd]+$)(?=.*?a)(?=[^c]*?c?[^c]+$)(?=[^d]*?d[^d]*?d[^d]*d[^d]*$).+$";
把正则改成这样就没问题了.之前的表达式有一个符号用错了. 这个正则并不难.建议你可以了解下正则.特别这题目无非就主要用到 (?=)这个而已.
rickylin86 2016-07-24
  • 打赏
  • 举报
回复

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test{
	public static void main(String[] args){
		String content = "bcdadd";
		String regex = "^(?=[abcd]+$)(?=.*?a)(?=[^c]+c?[^c]+$)(?=[^d]*?d[^d]*?d[^d]*d[^d]*$).+$";
		Matcher matcher = Pattern.compile(regex).matcher(content);
		System.out.println(matcher.matches());
	}
}

62,615

社区成员

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

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