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}但是
,那么它是相同的模式。