gpt4 book ai didi

python - 在 python 中使用带组的正则表达式从字符串解析参数

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:11 24 4
gpt4 key购买 nike

拜托,我正在尝试从字符串中获取一些参数。参数以 : 或 $ 开头,并括在方括号中。

例如:

some text [more text :Parameter1] more text [more (:Parameter2)]

我的目标是获得如下两场比赛:

Full match: [more text :Parameter1]

Group 1: :Parameter1

Full match: [more (:Parameter2)]

Group 1: :Parameter2

以下正则表达式几乎可以工作。参数本身被括在括号中的情况除外,例如 Parameter2。

r"\\[.*?([:\$].*?)]" 

在这些情况下我得到:

Full match: [more text :Parameter2]

Group 1: :Parameter2)

请注意,group1 带有最后一个括号。

我找不到删除它的方法。感谢任何帮助。

regex101 tests

谢谢。

最佳答案

如果您希望参数位于左括号和匹配的右括号之间,您可以使用 negated character classes [^][()$:] 匹配任何不在字符类中的字符。

要匹配任何一种可能性,您可以使用 alternation这将为您提供 2 个捕获组:

\[[^][()$:]*(?:\(([:$][^][()$:]+)\)|([:$][^][()$:]+))\]

关于模式

  • \[ 匹配[
  • [^][()$:]* 匹配 0+ 次不在字符类中的任何字符
  • (?: 非捕获组
    • \( 匹配 (
    • ( 捕获组 1
      • [:$][^][()$:]+ 匹配$:,然后匹配1+个不在字符类
    • ) 关闭第 1 组
    • \)匹配)
    • | 或者
    • ( 捕获组 2
      • [:$][^][()$:]+ 匹配$:,然后匹配1+个不在字符类
    • ) 关闭第 2 组
  • ) 关闭非捕获组
  • \] 匹配]

Regex demo

关于python - 在 python 中使用带组的正则表达式从字符串解析参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56974291/

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