regex - 使用大括号和关键字之间的正则表达式获取内容
问题描述
我只是面临一个问题,我无法解决它。我试图建立我的正则表达式模式,它必须在大括号之间获取内容,但如果只有一个确切的关键字位于左大括号之前。
(?<=(?:\testlist\b)|(?:){)((.*?)(?=}))
整个内容本身可能包含许多块(总是以关键字开头),例如:
nodelist{
...
...
}
testlist
{
...
...
}
使用上述模式,我可以获得每个节点内容,但我想在正则表达式中指定只有“testlist”节点的内容必须被抓取。(大括号的位置因设计而异,因为即使大括号与关键字在同一行,或者无论大括号后面包含多少个换行符,我也想获取内容)
有谁知道,我怎样才能做到这一点?
谢谢!
解决方案
您可以使用正则表达式
(?s)testlist\s*{(.*?)}
这从字面上匹配testlist
,后跟空格和字面左大括号。(.*?)
捕获所有内容,直到下一个右大括号。
用法:
PS C:\Users\greg> 'nodelist{
>> ...
>> ...
>> }
>> testlist
>> {
>> ...
>> ...
>> }' -match '(?s)testlist\s*{(.*?)}'
True
PS C:\Users\greg> $Matches.0
testlist
{
...
...
}
PS C:\Users\greg> $Matches.1
...
...
PS C:\Users\greg>
如果您想要完全匹配而不是捕获组:
PS C:\Users\greg> 'nodelist{
>> ...
>> ...
>> }
>> testlist
>> {
>> ...
>> ...
>> }' -match '(?s)(?<=testlist\s*{).*?(?=})'
True
PS C:\Users\greg> $Matches.0
...
...
PS C:\Users\greg>
推荐阅读
- android - 如何从图库中获取图像并将其传递给另一个活动
- cv2 - cv2.flip 是否返回 BGR 或 RGB 图像?
- python - 如何从搜索列表中突出显示 QTableWidget 中的单词
- html - 提交Angular JS后如何关闭表单
- nativescript - 使用 Nativescript Sidekick 为 iOS 构建云会导致 CODE_SIGN_ENTITLEMENTS 错误
- javascript - MVC 检查电子邮件是否已存在或未使用 Ajax
- android - 将捕获的图像或从画廊传递到另一个活动
- assembly - 为什么 make add rm 命令我没有指定?
- graph-databases - memgraphdb:支持图形数据库中的时间旅行查询
- aem - 无法在 WCMPojo 中获取隐式对象