我有一个PostgreSQL查询,它提供以下类型的输出:
<number> | [<empty_body>] <number> [<some_stuff>,"id":<ID>]
例如
5 | [] 7 ["id":6]
所以 我想得到:
5 "" and 7 "6"
或
8 | ["id" 9] 15 ["id" 18]
我希望得到:
8 "9" and 15 "18"
如何编写一些将返回<number>
和&#34; id&#34;的正则表达式如果它存在。
答案 0 :(得分:1)
你的输出模式是这样的:
(\d+)\s*\|?\s*\[(?:"id"\:?\s*|)(|\d+)\]
在第一个匹配组和第二个匹配组中查找。 See Online
Full match 0-6 `5 | []`
Group 1. 0-1 `5`
Group 2. 5-5 ``
Match 2
Full match 7-17 `7 ["id":6]`
Group 1. 7-8 `7`
Group 2. 15-16 `6`
Match 3
Full match 22-34 `8 | ["id" 9]`
Group 1. 22-23 `8`
Group 2. 32-33 `9`
Match 4
Full match 36-48 `15 ["id" 18]`
Group 1. 36-38 `15`
Group 2. 45-47 `18`
如果数组包含其他一些键值,请尝试使用此正则表达式:
(\d+)\s*\|?\s*\[.*?(?:"id"\:?\s*|)(|\d+\b)[^\d]*?\]