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