三个字母的任意组合的正则表达式,可以一个或多个,多个以分号间隔。但是不能重复,比如a,a;b,a;c,b;a 等等

bestStyle 2015-09-06 01:44:40
求高手指导,主要是不能重复不好实现。
...全文
415 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sprawling 2015-09-06
  • 打赏
  • 举报
回复
这个不能用正则来实现,正则没有动态排除的功能。
兔子爱读书 2015-09-06
  • 打赏
  • 举报
回复
如果你需要一条正则来完成,我可能做不到。如果是我,我会用集合和列表辅助正则来处理,希望对你有帮助:
#coding:utf-8
import re
def isright(str,a,b,c):
	pattern = re.compile(r'[abc],[abc],[abc]|[abc],[abc]|[abc]') 
	match = pattern.match(str)
	if match:
		return True
mystr = "a,a;b,a;c,b;d"
mylist = mystr.split(";")
if len(set(mylist))!= len(mylist):
	ismatch=False
	print("repeated")
else:
	myset = set(mylist)
	for item in myset:
		if isright(item,'a','b','c'):
			continue
		else:
			print(item,"dismatch")
			break
期待楼下更精简的解决方案。

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

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