我正试图围绕这一点,google和stackoverflow上的所有示例都没有帮助我理解。
我有这个字符串
{{@test: mytest}}
{{@test mytest}}
我想从这两个示例中捕获test
和mytest
。所以,如果在我的字符串中发生这两种情况,它们将返回相同的数组集。
这是我到目前为止所尝试的内容
/{{\s*@\s*(.*)\s*:\s*(.*)\s*}}/
这将适用于第一个示例,但不会在第二个示例上使用。
所以我想也许答案是搜索跳过:
的字符串?
答案 0 :(得分:2)
您尚未明确定义标准,但假设您要匹配的文本可能不包含空格,则可以使用此标准:
/{{\s*@\s*([^:\s]*)\s*:?\s*([^}\s]*)\s*}}/
[^:\s]*
匹配既不包含冒号也不包含空格的字符串[^}\s]*
匹配既不包含右括号也不包含空格的字符串:?
匹配可选的冒号答案 1 :(得分:1)
尝试\{\{\s*@([^@:\s]+)\s*:?\s+([^}\s]+)\s*\}\}
。
编辑: Ack,Tim Pietzcker打败了我。我们的表达方式之间存在一些微妙的差异,但我认为其中任何一个都应该做你想要的。我选择在一些地方使用+
而不是*
,在那里我对你的问题的解释让我相信必须至少有一个给定的角色。
编辑2:我的方法的一个优点是它与{{@testmy-test}}
不匹配。