import re
print sorted( re.findall(r'\b[abcABC][\w-]+' ,open("file.txt",'r').read()))
file.txt包括:
aaa
autonomic-ads-bgl
academy
bfc
bhhuu
cgak
ctsss
dec-ama-cdr
dfgg-hhj-bhjk
efghk-cgh-hghj
pattern-bgl-fghhj
输出:
aaa
academy
ama-cdr
autonomic-ads-bgl
bfc
bhhuu
bgl-fghhj
cgak
cgh-hghj
ctsss
但是必需的输出是从a到c的排序元素
aaa
academy
autonomic-ads-bgl
bfc
bhhuu
cgak
ctsss
答案 0 :(得分:0)
您可以排除之前带有连字符的所有条目:负面的背后隐藏:
print sorted(re.findall(r'(?<!-)\b[abcABC][\w-]+' ,s))
^^^^^^
请参阅Python demo
<强>详情:
(?<!-)
- 如果在当前正则表达式索引(位置)之前有-
权限,那么负面的背后效果会使匹配失败\b
- 领先的单词边界[abcABC]
- 集合中的一个字符[\w-]+
- 一个或多个字词或-
字符。请注意,如果您的单词不以单词边界开头,并且只有空格或字符串的开头,则可以使用(?<!\S)
lookbehind而不是(?<!-)\b
(demo ):
r'(?<!\S)[abcABC][\w-]+'