如何定义一个正则表达式,它将匹配如下所示的确切字符串: {VAR}
或以下任何格式: {VAR:10} {VAR:某物} ...表示如果存在“:”,则接受它右边的任何内容,直到结束}。
因此,它不应与此匹配: {VAR2}或{VAR3}等
现在我正在使用2个单独的正则表达式来搜索上述2种情况,并且想使用一种。
答案 0 :(得分:1)
可能有点粗糙,但是我相信这是您要寻找的东西
^{VAR(}|(:[A-Z0-9]+?)})$
这将把字符串的开头作为{VAR,然后检查是否找到}或a:,然后是一系列数字或大写字符,直到找到}。
编辑: 我不知道OP会在字符后寻找任何东西,所以我写了一个新版本,可以容纳任何字符。
^{VAR(}|(:.+)})$
这里也是其中的Demo。
答案 1 :(得分:1)
首先,我建议阅读前瞻性,回顾性和If-Then-Else构造。我建议在www.regular-expressions.info上this article进行详细说明
下面的正则表达式应捕获您的需求
{VAR(?(?=:)[^}]*}|})
该模式以{VAR
开头,因为在所有情况下这都是恒定的。
然后,我们利用if-then-else构造和正面看待检查冒号(?(?=:)
,并在[^}]*}
存在冒号的情况下匹配所有内容,包括右括号。如果不存在冒号,则|或|之后的部分。只会匹配右大括号}。
答案 2 :(得分:0)
尝试使用正则表达式:{VAR}|(?<={VAR:)\w+(?=})