如何使用正则表达式从方括号中保留一个选项

3
我正在尝试编写正则表达式,用第一个选项替换整个方括号。例如,[choice A | choice B] 我想将前面的方括号整体替换为choice A。但是,当我有多个这样的括号时:[choice A | choice B] 并在 [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)
1个回答

2

您可以使用

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演示正则表达式演示。 正则表达式匹配:
  • \[ - 匹配一个[字符
  • \s* - 匹配零个或多个空格
  • ([^][|]*?) - 第一组(替换模式中的\1指代该值):匹配零个或多个非[]|的字符,尽可能少地匹配
  • \s*\| - 匹配零个或多个空格和一个|字符
  • [^][]* - 匹配任意零个或多个非][的字符
  • ] - 匹配一个]字符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接