0

我正试图解决这个问题,谷歌和stackoverflow上的所有例子都没有帮助我理解。

我有这个字符串

{{@test: mytest}} {{@test mytest}}

我想从这两个例子中捕捉test和。mytest所以如果这发生在我的字符串中,两者都将返回相同的数组集。

这就是我到目前为止/正在尝试的

/{{\s*@\s*(.*)\s*:\s*(.*)\s*}}/

这将适用于第一个示例,但不适用于第二个示例。

所以我想也许答案是搜索跳过的字符串:

4

2 回答 2

2

您尚未明确定义您的标准,但假设您要匹配的文本可能不包含空格,您可以使用以下命令:

/{{\s*@\s*([^:\s]*)\s*:?\s*([^}\s]*)\s*}}/
  • [^:\s]*匹配既不包含冒号也不包含空格的字符串
  • [^}\s]*匹配既不包含右大括号也不包含空格的字符串
  • :?匹配一个可选的冒号
于 2012-09-21T06:23:22.543 回答
1

试试\{\{\s*@([^@:\s]+)\s*:?\s+([^}\s]+)\s*\}\}

编辑: Ack,Tim Pietzcker 打败了我。我们的表达方式之间存在一些细微的差异,但我认为任何一个都应该做你想做的事。我选择使用+而不是*在几个地方,我对你问题的解释使我相信必须至少有一个给定的字符。

编辑2:我的方法的一个优点是它不匹配{{@testmy-test}}

于 2012-09-21T06:26:22.857 回答