如何在python3中为多个相同字符编码正则表达式模式?

2024-09-30 08:21:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下形式的长字符串:

joined_string = "ASOGHFFFFFFFFFFFFFFFFFFFGFIOSGFFFFFFFFURHDHREEKFFFFFFIIIEI..."

它是由连续F个字母组成的随机字符串的串联:

ASOGH
FFFFFFFFFFFFFFFFFFF
GFIOSG
FFFFFFFF
URHDHREEK
FFFFFF
IIIEI

连续F字母的数量不是固定的,但将有5个以上, 让我们假设五个F字母不会连续出现在随机字符串中

我只想提取随机字符串以获得以下列表:

random_strings = ['ASOGH', 'GFIOSG', 'URHDHREEK', 'IIIEI']

我想有一个简单的正则表达式可以解决这个问题:

random_strings = joined_string.split('WHAT_TO_TYPE_HERE?')

问题:如何为多个相同字符编码正则表达式模式


Tags: 字符串string字母random形式stringsffffffjoined
3条回答

我会在这里使用regex find all方法:

joined_string = "ASOGHFFFFFFFFFFFFFFFFFFFGFIOSGFFFFFFFFURHDHREEKFFFFFFIIIEI"
parts = re.findall(r'F{2,}|(?:[A-EG-Z]|F(?!F))+', joined_string)
print(parts)

这张照片是:

['ASOGH', 'FFFFFFFFFFFFFFFFFFF', 'GFIOSG', 'FFFFFFFF', 'URHDHREEK', 'FFFFFF', 'IIIEI']

这里的正则表达式模式可以解释为:

F{2,}         match any group of 2 or more consecutive F's (first)
|             OR, that failing
(?:
    [A-EG-Z]  match any non F character
    |         OR
    F(?!F)    match a single F (not followed by an F)
)+            all of these, one or more times

您可以使用F{5,}使用拆分,并将其保留在捕获组中,以便拆分文本也是结果的一部分:

import re
s = "ASOGHFFFFFFFFFFFFFFFFFFFGFIOSGFFFFFFFFURHDHREEKFFFFFFIIIEI"
print( re.split(r'(F{5,})', s) )

输出:

['ASOGH', 'FFFFFFFFFFFFFFFFFFF', 'GFIOSG', 'FFFFFFFF', 'URHDHREEK', 'FFFFFF', 'IIIEI']

我将使用^{}按如下方式执行此任务

import re
joined_string = "ASOGHFFFFFFFFFFFFFFFFFFFGFIOSGFFFFFFFFURHDHREEKFFFFFFIIIEI"
parts = re.split('F{5,}',joined_string)
print(parts)

输出

['ASOGH', 'GFIOSG', 'URHDHREEK', 'IIIEI']

F{5,}表示5个或更多F

相关问题 更多 >

    热门问题