动态范围

时间:2016-04-22 05:42:05

标签: python regex

这是我第一次使用Regular Expression所以任何帮助都会感激不尽。我是从Font Awesome

抓取来的
['fa', 'fa-american-sign-language-interpreting']///what I want: fa-american-sign-language-interpreting
['fa', 'fa-viadeo-square']///what I want: fa-viadeo-square
['fa', 'fa-adjust']///what I want: fa-adjust

这就是我的所作所为:

(fa-)[a-z]+(-)?[a-z]+(-)?[a-z]+(-)?[a-z]+

我觉得它现在适用,但如果有超过4 -,那么这条线就不行了。我相信它应该更短,更有活力。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

KISS,让第二部分重复一次或多次。

\bfa(?:-[a-z]+)+

DEMO

答案 1 :(得分:0)

/(fa-(?:-?\w+)+)/g

演示时间为http://regexr.com/3d97e

答案 2 :(得分:0)

考虑到它的格式,第一个条目只有fa,但第二个条目将以fa-开头,您需要第二个条目:

(fa-[\w-]+)

Regex Demo Here

这是Ideone上的工作演示。

import re

s = """
     ['fa', 'fa-american-sign-language-interpreting']
     ['fa', 'fa-viadeo-square']
     ['fa', 'fa-adjust']
    """

m = re.findall(r"fa-[\w-]+", s)
print(m)

# ['fa-american-sign-language-interpreting', 'fa-viadeo-square', 'fa-adjust']