gpt4 book ai didi

regex - 用于从 MDX 查询中提取元素的正则表达式

转载 作者:行者123 更新时间:2023-12-04 15:12:54 25 4
gpt4 key购买 nike

我想从给定的 MDX 查询中提取信息或查询轴元素。
假设我有这个查询:

SELECT NON EMPTY {
Hierarchize({[Product].[Product Family].Members})
} ON COLUMNS,
NON EMPTY Hierarchize (
Union (
CrossJoin ( {[Time].[1997].[Q1]},
CrossJoin ([Store].[Store Name].Members,
[Store Type].[Store Type].Members
)
),
CrossJoin({[Time].[1997].[Q2]},
CrossJoin([Store].[Store Name].Members,
[Store Type].[Store Type].Members
)
)
)
) ON ROWS FROM [Sales]
WHERE {
Hierarchize({[Measures].[Unit Sales]})
}

我想提取的子字符串有这样的模式:
[...](。[...]) 或者
[...].[...].成员

请注意, ... 表示任何字母数字,括号内的意思可以重复出现。
因此,我期望的结果是:

[Product].[Product Family].Members; [Time].[1997].[Q1]; [Time].[1997].[Q2]; [Store].[Store Name].Members; [Store Type].[Store Type].Members; [Measure].[Unit Sales]



我尽力了,终于想通了这个正则表达式:
\[.*?[A-Za-z\s]\](.*?(\.\[.*?[A-Za-z\s]\])|(\.Members))

但结果是:

[Product].[Product Family]; [Time].[1997].[Q1]}, CrossJoin ([Store]; [Store Name].Members, [Store Type].[Store Type]; [Time].[1997].[Q2]}, CrossJoin([Store]; [Store Name].Members, [Store Type].[Store Type]; [Sales] WHERE {Hierarchize({[Measures].[Unit Sales]



有人可以用我的正则表达式进行更正吗?
任何帮助,将不胜感激。

最佳答案

嗯,你能不能试试这个:

(\[[\w ]+\]\.\[[\w ]+\](?:\.(?:Members|\[Q\d\]))?)

这似乎对我有用。我在 Rubular 上试过了.

关于regex - 用于从 MDX 查询中提取元素的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15864454/

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