不匹配的转义括号
Unmatch escaped braces
我可以使用哪个正则表达式来查找所有 }
,同时排除转义的 \}
?
IE。我如何获得唯一匹配项:
{Hello \} world}
^
您可以试试下面的模式:
[^\](?P<bracket>})
请注意,这将 select 前面没有 \
的所有 }
,但任何其他字符都将被 select 编辑。您可以尝试 .group
函数,将 bracket
作为 select 括号的参数。
为了更好地理解,请查看 this link
更新
就个人而言,我更喜欢绿色的答案,因为它 select 是所需的括号。
以下模式应该可以实现您的目标:
(?<!\)\}
您要找的模式是(?<!...)
:
Matches if the current position in the string is not preceded by a match for .... This is called a negative lookbehind assertion.
与 Amirhossein Kiani 的建议相反,匹配不包括前面的字符,而只包括右括号。举例说明:
{Hello \} world}
^ with negative lookbehind
{Hello \} world}
^^ with Amirhossein Kiani's suggestion
注意:在 Python 中使用正则表达式时,请研究 the documentation。许多像这样的简单问题是可以避免的。
我可以使用哪个正则表达式来查找所有 }
,同时排除转义的 \}
?
IE。我如何获得唯一匹配项:
{Hello \} world}
^
您可以试试下面的模式:
[^\](?P<bracket>})
请注意,这将 select 前面没有 \
的所有 }
,但任何其他字符都将被 select 编辑。您可以尝试 .group
函数,将 bracket
作为 select 括号的参数。
为了更好地理解,请查看 this link
更新
就个人而言,我更喜欢绿色的答案,因为它 select 是所需的括号。
以下模式应该可以实现您的目标:
(?<!\)\}
您要找的模式是(?<!...)
:
Matches if the current position in the string is not preceded by a match for .... This is called a negative lookbehind assertion.
与 Amirhossein Kiani 的建议相反,匹配不包括前面的字符,而只包括右括号。举例说明:
{Hello \} world}
^ with negative lookbehind
{Hello \} world}
^^ with Amirhossein Kiani's suggestion
注意:在 Python 中使用正则表达式时,请研究 the documentation。许多像这样的简单问题是可以避免的。