【问题标题】:Using regex to detect ONLY double braces使用正则表达式仅检测双括号
【发布时间】:2022-01-17 14:06:37
【问题描述】:

我编写了一些代码来抓取两个大括号之间的所有内容以及大括号本身

strings = re.findall('\{{.*?\}}',string)

但是,如果字符串包含不匹配的括号,例如“John 来自 {{city},{{country}}”,这将无法正常工作。

有没有办法调整我的代码,使我只能抓住匹配的括号?

【问题讨论】:

    标签: python regex


    【解决方案1】:

    您可以简单地使用字符类从“包含的字符串”中排除大括号:

    strings = re.findall(r'\{\{[^{}]*\}\}', string)
    

    【讨论】:

    • 我认为您也不需要转义括号。 +
    • @JvdV 我也不认为这样做会造成伤害。 IIRC 大括号是特殊字符,我更喜欢谨慎行事。
    • 当双括号内有单括号时,这将无法正常工作。例如,{{a string}} 匹配,但{{f"a {variable} in an f-string"}} 不匹配
    • @Expurple OP 并未决定所有这些“边缘”案例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 2016-01-20
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多