我有几行类似于下面的示例,我想捕获第一个括号中的所有内容,然后捕获some texts
部分中的所有内容。
{Foo} - {Bar} - some texts
预期结果:{Foo} - some texts
所有文本和方括号中的文本都将不同,因此我需要基于{}
和-
来捕获我所需要的内容。
我想出的一切都放在第一个括号\{(.*?)\}
中。但是,我不太确定如何跳过中间部分,而只是抓住some texts
。我正在使用环视断言,这是解决此问题的最佳方法吗?
谢谢。
答案 0 :(得分:1)
Billing enabled default limit
☝☝
从此处替换为.......................... \ s- \ s
此模式将匹配同一行和/或多行的倍数。
/(\{.+?\})\s-\s\{.+?\}\s-\s(.+?)\b/gi;
答案 1 :(得分:0)
这在perl中有效,它会跳过所有内容,直到.+\} -
为止,然后匹配剩下的内容:
$ cat x.pl
use strict;
my $str = '{Foo} - {Bar} - some texts';
if ($str =~ /\{(.*?)\}.+\} - (.+)/) {
print "$1, $2\n";
}
$ perl x.pl
Foo, some texts
答案 2 :(得分:0)
以下正则表达式应与/({[^}]+})(?:.+})?(.+)/
一起使用,其中capture group 1
包含 {Foo} ,并且capture group 2
包含一些文本