python - 了解 findall() 正则表达式结果
问题描述
我有这个输入:FBBBBFFRRL
前 7 个字符可以是 F 或 B,后 3 个字符是 R 或 L。
我想把它分成2个字符串,所以这就是我所做的:
regex = re.findall('^((F|B){7})', 'FBBBBFFRRL')
print(regex)
我不明白为什么我得到这个:
[('FBBBBFF', 'F')]
第一项是正确的,但为什么我也得到一个 F?
解决方案
的结果findall
对应于正则表达式中的括号。较长的结果字符串对应于第一个(外)括号,第二个对应于上次迭代中与内括号匹配的任何内容。
如果您不想这样,请使用非捕获括号(?:F|B)
- 或者在您只匹配一组单个字符中的一个的情况下,使用 character class [FB]
。
您可以利用它来检查您的条件并一次性对字符串进行分区;
matches = re.findall(r'^([BF]{7})([LR]{3})$', your_string)
推荐阅读
- fiware - 通过 RPM 安装 Cygnus:存储库问题
- powershell - Powershell通过按升序替换n个字符来重命名文件名
- linux - QBluetooth BLE 广告在 ubuntu (BlueZ) 上不起作用
- sql - 借方贷方余额和期初余额计算
- c# - 使用 MsTest 的 Moq 静态隐式运算符
- python - 如何在变量中获取python代码的python交互式shell输出?
- rust - 创建一个实现特定 Fn 接口的结构
- reactjs - 如何将拦截器响应或拦截器错误中的数据传递给 React 中的其他组件
- django - Django Rest - 测试 api 删除
- javascript - 由于 Android Javascript webView 回调,VueJS 无法构建