【问题标题】:Strange behaviour of findallfindall 的奇怪行为
【发布时间】:2020-09-19 06:06:55
【问题描述】:
import re
text1 = '"Python", "PHP", "Java",'
print(re.findall(r'P(.*?)n', text1))

预期输出:['Python']

实际输出:['ytho']

虽然正则表达式引擎与“Python”匹配,但 findall 会忽略输出中的“P”和“n”。有人能说出这里实际发生的事情吗

【问题讨论】:

  • 使用括号表示捕获组。正则表达式根据正则表达式正确找到“Python”,并从捕获组返回结果。

标签: python-3.x findall python-re


【解决方案1】:

你需要一个非捕获组:

re.findall(r'P(?:.*?)n', text1)

注意左括号后的?:。否则,re 仅捕获与括号中的表达式匹配的字符串部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 2015-07-20
    • 2010-10-03
    • 2021-07-12
    • 2013-10-04
    相关资源
    最近更新 更多