提取设置为No的字符串连字符

时间:2018-11-28 21:01:07

标签: python regex

如果我有如下示例字符串:

LEARNING-LEARNING-LEARNING-LEARNING-LEARNING-COMPANY_ORG_CHART-LEARNING-LEARNING-LEARNING-END

我只想提取前n个。的步骤,其中n由no定义。之间的连字符。

So if n=5, 

我只想要前5个步骤。

输出:

LEARNING-LEARNING-LEARNING-LEARNING-LEARNING

我尝试过:

s1=re.search(r'([A-za-z_].*-{0,5}[A-za-z_].*?)',s)
print(s1.group())

但是它将整个字符串作为输出。

LEARNING-LEARNING-LEARNING-LEARNING-LEARNING-COMPANY_ORG_CHART-LEARNING-LEARNING-LEARNING-END
In [ ]:

2 个答案:

答案 0 :(得分:6)

如果这是实际格式,则对于提供的示例,正​​则表达式可能会过大。另一种选择是仅使用字符串方法和索引:

x='LEARNING-LEARNING-LEARNING-LEARNING-LEARNING-COMPANY_ORG_CHART-LEARNING-LEARNING-LEARNING-END'

print('-'.join(x.split('-')[:5]))

'LEARNING-LEARNING-LEARNING-LEARNING-LEARNING'

答案 1 :(得分:0)

尝试一下:

s1 = re.search(r'^([A-za-z_]+-){0,4}[A-za-z_]+',s)
print(s1)

(此示例适用于n = 5)