gpt4 book ai didi

regex - 在括号和关键字之间使用RegEx获取内容

转载 作者:行者123 更新时间:2023-12-02 23:17:49 24 4
gpt4 key购买 nike

我只是面对一个我无法解决的问题。
我试图建立我的正则表达式模式,该模式必须在大括号之间获取内容,但是如果仅确切的关键字位于大括号之前。

(?<=(?:\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>

关于regex - 在括号和关键字之间使用RegEx获取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60290430/

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