我需要在.NET中的双花括号之间获取文本。 我明白了:
\{{([^}]+)\}}
但是,它还包括双花括号。 有没有办法排除它们?
答案 0 :(得分:2)
我不是正则表达式的主人,但这应该起作用并回答你关于专门选择前后元素的问题。尝试:
(?<=\{\{).*(?=\}\})
如果你想解释为什么会这样,我会引导你完成它:
(?<=\{\{)
是正向后视 *的开头,它在您要查找的内容之后匹配一个组而不将其包含在结果中。这基本上是你要求的第一部分。 \{\{)
是您实际需要的转义字符。
.*
说你想要选择任何数量的时间,直到你到达{em>积极前瞻的小组(?=\}\})
,基本上是第二部分你在寻找什么。这将选择该选择器后面的所有内容,两个转义的结束花括号,而不选择大括号本身。
*注意! javascript中支持正面观察 。
答案 1 :(得分:0)
Groups [0]是整个子串
组[1]等在()
之间返回文本尝试
new Regex(@"\{{([^}]+)\}}").Match("dfdf{{456gfd}}3453").Groups[1]
答案 2 :(得分:0)
(此答案并非特定于.NET)
对于非贪婪的基本捕获正则表达式(因此将匹配用双引号包围的最小字符串),并且在匹配项中包括用单花括号括起来的文本:
{{(([^}][^}]?|[^}]}?)*)}}
给予
{{first group}} nothing {{second {special} group}}
我们将捕获以下内容
first Group
second {special} group
{{
::匹配两个大括号(
... )
::我们想要的位置捕获
(...|...)*
::匹配两个重复出现的两个
由|
分隔的替代项
[^}][^}]?
::匹配除右大括号外的所有内容,
}}
(?
是确保我们可以匹配奇数和偶数长度的必要条件
字符串)[^}]}?
::匹配一个可选的单个右大括号
直接在前括号之前。}}
::匹配右双括号