gpt4 book ai didi

python - python 中的正则表达式 : removing square brackets and parts of the phrase inside of the brackets

转载 作者:行者123 更新时间:2023-11-28 19:44:56 29 4
gpt4 key购买 nike

我有一个维基百科转储,正在努力寻找合适的正则表达式模式来删除表达式中的双方括号。这是表达式的示例:

line = '是除草剂橙 (HO) 和 Agent LNX 的代号组合,LNX 是 [[美国武装部队使用的 [[除草剂]] 和 [[落叶剂]] 之一部队|美国military]] 作为其 [[除草战]] 计划的一部分,[[Operation Ranch Hand]],在 1961 年至 1971 年 [[越南 war ]] 期间。'

我希望删除符合以下条件的所有方括号:

  • 如果方括号内没有垂直分隔符,则移除括号。

    示例:[[herbicide]]s 变为 herbicides

  • 如果括号内有竖向分隔符,去掉括号,只使用分隔符后面的短语。

    示例:[[美国武装部队|美国。 military]] 变为 U.S.军事

我尝试使用 re.matchre.search 但无法获得所需的输出。

感谢您的帮助!

最佳答案

你需要的是re.sub。请注意,方括号和竖线都是元字符,因此需要对其进行转义。

re.sub(r'\[\[(?:[^\]|]*\|)?([^\]|]*)\]\]', r'\1', line)

替换字符串中的 \1 指的是括号内匹配的内容,?: 开头(即在任何情况下你想要的文本)。

有两个注意事项。这只允许在打开和关闭支架之间使用一根管道。如果有多个,则需要指定是要第一个之后的所有内容还是最后一个之后的所有内容。另一个警告是,不允许在左括号和右括号之间使用单个 ]。如果这是一个问题,仍然会有一个正则表达式解决方案,但它会复杂得多。

对于模式的完整解释:

\[\[        # match two literal [
(?: # start optional non-capturing subpattern for pre-| text
[^\]|] # this looks a bit confusing but it is a negated character class
# allowing any character except for ] and |
* # zero or more of those
\| # a literal |
)? # end of subpattern; make it optional
( # start of capturing group 1 - the text you want to keep
[^\]|]* # the same character class as above
) # end of capturing group
\]\] # match two literal ]

关于python - python 中的正则表达式 : removing square brackets and parts of the phrase inside of the brackets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13652089/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com