我有点卡在这里......
我正在努力解析一些看起来像这样的信息(CouchDB数据库内容):
rows=[{"id":"AGO","key":"AGO","value":{"rev":"1-78f969c9a3f590d11c78d711558b393d"}},{"id":"ALB","key":"ALB","value":{"rev":"1-ecb0ea637ac64ed98d895a268dbe1edf"}},{"id":"ARE","key":"ARE","value":{"rev":"1-8b863c318c3f818f6597b71b7e336535"}},{"id":"ARG","key":"ARG","value":{"rev":"1-a443a4968d8345f723a8c4c7dbd11239"}},{"id":"ARM","key":"ARM","value":{"rev":"1-56eebce5411ba54c49258a690fa46c44"}}]
这是一条很长的路线。
我要做的是创建一个可以帮助我获得“id”字段的正则表达式。所以输出应该是这样的:
AGO
ALB
ARE
ARG
ARM
我知道如果我们只有一行("id":"(\w+{3})")
,这会很容易,但我怎样才能创建一个在字符串上重复的正则表达式呢?
答案 0 :(得分:1)
如果您必须在正则表达式中执行该操作,并且您可以访问所显示的字符串中的数据,那么这与您的ID匹配:
(?<="id":")[^"]*(?=")
请参阅demo
(?<="id":")
断言我们前面有"id":"
[^"]*
与ID匹配:任何不是双引号的字符(?=")
断言以下是双引号答案 1 :(得分:1)
如果您的语言支持\K
,则下面的正则表达式会捕获所有ID。
\"id":\"\K([^"]*)
<强>解释强>
\"id":\" # Matches "id":"
\K # Used to discard the previous matches. So "id":" got discarded.
([^"]*) # Matches all the characters except " zero or more times.