[英]Regex match everything between two {}
我在这里看到了不同的答案,但不幸的是,这些答案都不适合我的情况。 所以我希望你不介意。
所以我需要匹配两个大括号{}之间的所有内容,除了匹配以@开头且没有这些大括号的情况,例如:
这是我的测试字符串,1,2,3有效,而最后一个不应该是:
1 {eww}
2 r23r23{fetwe}
3 #{d2dded}
4 @{d2dded}
我正在尝试:
(?<=[^@]\{)[^\}]*(?=\})
然后只有第2和第3个选项匹配(没有第一个) https://regex101.com/r/qRInUf/2/
然后我在尝试:
\{(.*?)\} or [^@]\{(.*?)\}
在这两种情况下,我都无法匹配1,2,3值https://regex101.com/r/uYRtLD/1
在此先感谢您的任何建议。
编辑:这是为java。
(?<=(?<!@)\{)[^}]*(?=})
(?<=(?<!@)\\{)
正向后视确保先于匹配以下内容的内容
(?<!@)
负回顾后保证什么先不匹配@
字面上 \\{
匹配{
字面意思。 [^}]*
匹配除}
以外的任何字符 (?=})
正前瞻确保接下来是}
字面上 结果:
{eww} # Matches eww
r23r23{fetwe} # Matches fetwe
#{d2dded} # Matches d2dded
@{d2dded} # Does not match this because @ precedes {
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.