【问题标题】:Regex to keep one choice in square bracket正则表达式将一个选择保留在方括号中
【发布时间】:2021-10-20 05:29:46
【问题描述】:

我正在尝试编写一个正则表达式来用首选替换整个方括号。比如[ choice A | choice B ]我想把前面的方括号整体替换成choice A。但是,当我有多个这些括号时:

[ choice A | choice B ] and choose between [ choice D | choice F ]

在同一行中,所有括号都替换为choice A。我知道这是因为我在代码中选择了 [0],但我不知道如何用各自的选择替换每个括号;即choice Achoice D

import re
line = "[ choice A | choice B ] and choose between [ choice D | choice F ]"
x = re.findall( r"\[(.*?)\|", line)[0].strip()
line = re.sub(r"\[(.*?)\]", x,line)
print(line)

【问题讨论】:

    标签: python regex


    【解决方案1】:

    你可以使用

    import re
    line = "[ choice A | choice B ] and choose between [ choice D | choice F ]"
    line = re.sub(r"\[\s*([^][|]*?)\s*\|[^][]*]", r"\1", line)
    print(line) # => choice A and choose between choice D
    

    请参阅 Python demoregex demo。正则表达式匹配

    • \[ - 一个 [ 字符
    • \s* - 零个或多个空格
    • ([^][|]*?) - 第 1 组(替换模式中的\1 指的是该值):除[]| 之外的零个或多个字符,尽可能少
    • \s*\| - 零个或多个空格和一个 | 字符
    • [^][]* - 除][ 之外的任何零个或多个字符
    • ] - ] 字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      • 2012-03-12
      相关资源
      最近更新 更多