Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 理解findall()正则表达式结果_Python_Regex - Fatal编程技术网

Python 理解findall()正则表达式结果

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的结果对应于正则表达式中的括号。较长的结果字符串对应于第一个(外)括号,第二个对应于上一次迭代中与内括号匹配的内容 如果您不

我有这个输入:FBBBBFFRRL

前7个字符可以是F或B,最后3个字符是R或L

我想把它分成两个字符串,下面是我所做的:

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)