非贪婪的LookAhead

时间:2009-07-23 09:47:22

标签: regex regex-greedy

我有如下字符串:

val:key

我可以使用/^\w*/捕捉'val'。

如何在没有':'符号的情况下获取'key'

由于

4 个答案:

答案 0 :(得分:4)

这个怎么样?

/^(\w+):(\w+)$/

或者,如果您只想捕获冒号后的所有内容:

/:(.+)/

这是一个不太清楚的例子,使用lookbehind断言来确保在匹配之前发生冒号 - 整个匹配将不包括该冒号。

/(?<=:).*/

答案 1 :(得分:1)

您使用的是哪种语言? /:(.*)/不捕获“:”但它匹配':'

在Perl中,如果你说:

$text =~ /\:(.*)/;
$capture = $1;
$match = $&;

然后$ capture将没有“:”和$ match会。 (但是尽量避免使用$&amp;因为它减慢了Perl:这只是为了说明匹配)。

答案 2 :(得分:1)

这将捕获组1中的键和组2中的值。即使值包含冒号(:)字符,它也应该正常工作。

^(\w+?):(.*)

答案 3 :(得分:0)

/\:(\w*)/ 

查找:然后捕获它之后的所有单词字符,直到字符串结尾