Python 理解findall()正则表达式结果
我有这个输入:FBBBBFFRRL 前7个字符可以是F或B,最后3个字符是R或L 我想把它分成两个字符串,下面是我所做的:Python 理解findall()正则表达式结果,python,regex,Python,Regex,我有这个输入:FBBBBFFRRL 前7个字符可以是F或B,最后3个字符是R或L 我想把它分成两个字符串,下面是我所做的: regex = re.findall('^((F|B){7})', 'FBBBBFFRRL') print(regex) 我不明白为什么我会得到这个: [('FBBBBFF', 'F')] 第一项是正确的,但为什么还要得到一个F?来自findall的结果对应于正则表达式中的括号。较长的结果字符串对应于第一个(外)括号,第二个对应于上一次迭代中与内括号匹配的内容 如果您不
regex = re.findall('^((F|B){7})', 'FBBBBFFRRL')
print(regex)
我不明白为什么我会得到这个:
[('FBBBBFF', 'F')]
第一项是正确的,但为什么还要得到一个F?来自
findall
的结果对应于正则表达式中的括号。较长的结果字符串对应于第一个(外)括号,第二个对应于上一次迭代中与内括号匹配的内容
如果您不想这样做,请使用非捕获括号(?:F | B)
——或者在仅匹配一组单个字符中的一个的情况下,使用字符类[FB]
您可以利用它来检查您的条件并一次性对字符串进行分区
matches = re.findall(r'^([BF]{7})([LR]{3})$', your_string)