4

我正在寻找一些有关 MYSQL 查询的正则表达式的帮助。我对表达式还很陌生,并且已经让自己彻底困惑了。

我的数据库单元看起来像这样

1314{{Here is some data}}1213{{More data here}}1112{{Data ahoy}}

我正在尝试编写一个表达式来尝试匹配数据集,但只匹配括号内的数据。

例如,假设$year=1314$term="ahoy"

使用以下正则表达式:

$year\{\{.* $term.*\}\}

它返回一个匹配 - 因为它匹配 1112 前缀数据集的最终“}}”。我不希望它这样做,但是尽管阅读了这个贪婪/否定的业务,但我无法让语法正常工作。实现我所追求的最佳方式是什么?

4

1 回答 1

4

尝试:

$year\{\{[^}]*$term[^}]*\}\}

where[^}]*匹配任何不是 a 的东西,}所以当它第一次出现时它将停止匹配}

.*是贪婪的,所以它会匹配最后一次出现的可能,所以.*\}\}匹配最后一组}}使其不贪婪,你可以使用?like .*?\}\},但我更喜欢使用否定。

于 2012-12-21T15:08:07.627 回答