Regex 正则表达式从上一个匹配中的最后一个字母开始匹配

Regex 正则表达式从上一个匹配中的最后一个字母开始匹配,regex,Regex,我有下面的正则表达式 (\{\w*\}\s*[^{}]+\s*)\{? 我正在这根绳子上测试它 this {match} is cool{match} but {match} this one is more cool 目前我能够捕获两个组->{match}很酷和{match}这一组更酷,因此您可以看到组,但{match}缺失 这是因为最后一个匹配的字符是{,所以在下一个匹配回合中,他将跳过{,直到出现新的{才能够匹配 有没有人知道如何强制匹配中间组呢 调试:您可能只需要删除\{?(还有\s

我有下面的正则表达式

(\{\w*\}\s*[^{}]+\s*)\{?
我正在这根绳子上测试它

this {match} is cool{match} but {match} this one is more cool
目前我能够捕获两个组->
{match}很酷
{match}这一组更酷
,因此您可以看到组
,但{match}
缺失

这是因为最后一个匹配的字符是
{
,所以在下一个匹配回合中,他将跳过
{
,直到出现新的
{
才能够匹配

有没有人知道如何强制匹配中间组呢


调试:

您可能只需要删除
\{?
(还有
\s*
);您也不需要捕获括号:

\{\w*\}[^{}]+
测试一下

如果要强制匹配在
{
之前或字符串末尾结束,可以使用:

\{\w*\}[^{}]+(?=\{|$)

但是,只有在嵌套大括号的情况下,如果想要完全避免匹配,您才需要它,比如在
{{match}
中,第一个正则表达式将找到
{match}。无论什么

,您可能只需要删除
\{
(以及
\s*
),您也不需要捕获括号:

\{\w*\}[^{}]+
测试一下

如果要强制匹配在
{
之前或字符串末尾结束,可以使用:

\{\w*\}[^{}]+(?=\{|$)

但是,如果希望在嵌套大括号的情况下完全避免匹配,则只需要这样做,如在
{match}whatever}
中,第一个正则表达式将找到
{match}whatever

,您可以使用以下
正则表达式
从上一个匹配中的最后一个字母开始匹配

\{\w*\}[^{}]+(?=\{|$)

可以使用以下
正则表达式
从上一个匹配中的最后一个字母开始匹配

\{\w*\}[^{}]+(?=\{|$)

您将在正则表达式中包含下一个
{
(但不在匹配中),因此它将在后面的字符上开始下一个匹配,跳过第一个
{
,直到找到第二个才匹配

没有必要戴假发或诸如此类的东西。 如果删除
\{?
的尾随检查,您将获得所有3个匹配项(也可以从括号中删除
}
和最后一个
\s*
):

(\{\w*\}\s*[^{]+)

()

您还可以使用以下正则表达式,具体取决于捕获的具体程度:

(\{\w*\}[\w\s]*)


您将在正则表达式中包含下一个
{
(但不在匹配中),因此它将在后面的字符上开始下一个匹配,跳过第一个
{
,直到找到第二个才匹配

没有必要戴假发或诸如此类的东西。 如果删除
\{?
的尾随检查,您将获得所有3个匹配项(也可以从括号中删除
}
和最后一个
\s*
):

(\{\w*\}\s*[^{]+)

()

您还可以使用以下正则表达式,具体取决于捕获的具体程度:

(\{\w*\}[\w\s]*)

尝试此操作。对0宽度断言使用前瞻。请参阅演示

尝试此操作。对0宽度断言使用前瞻。请参阅演示


第二种解决方案可以。但我确实认为OP希望获得匹配和关于OR前瞻性的解释可以改进您的解决方案answer@Tensibai:你所说的“获取匹配项”是什么意思?正则表达式获取匹配项,它只是没有(另外)将它们捕获到一个包含完全相同文本的组中。我的意思是拥有捕获组供以后使用,但不知道使用的语言,这是我的假设,你是对的。编辑,ooops,起初没有看到指向regex101的链接,忘记了解释请求:)第二个解决方案可以。但我确实认为OP希望获取匹配项和有关ORD前瞻性的解释可以提高您的性能answer@Tensibai:你所说的“获取匹配项”是什么意思?正则表达式获取匹配项,它只是没有(另外)在一个包含完全相同文本的组中捕获它们。我的意思是拥有捕获组供以后使用,但不知道所使用的语言,这是我的假设,你是对的。编辑,ooops,一开始没有看到指向regex101的链接,忘记了解释请求:)你正在尝试捕获
但是{match}
{match}但是
?因为如果它是第一个,那么它与您捕获的其他模式不同。如果您试图捕获
{match}但是
,那么它是相同的模式。您试图捕获
但是{match}
还是
{match}但是
?因为如果它是第一个,那么它与您捕获的其他模式不同。如果您试图捕获
{match}但是
,那么它是相同的模式。