【发布时间】:2014-08-02 01:07:29
【问题描述】:
在 LaTeX 中,表达式 \o{a}{b} 表示运算符 'o' 有两个参数 a 和 b。 LaTeX 也接受\o{a},在这种情况下将第二个参数视为空字符串。
现在我尝试将正则表达式 \\\\o\{([\s\S]*?)\}\{([\s\S]*?)\} 与字符串 \o{a}\o{a}{b} 进行匹配。当它不是匹配时,它会将整个字符串误认为是匹配的。 (对这个字符串的正确解释是子字符串\o{a}{b} 是唯一的匹配项。)关键是我需要知道如何告诉 PHP 识别如果除了 { 在第一个 } 之后还有其他内容,那么它不是一场比赛。
我该怎么做?
编辑:运算符的参数允许包含符号\、{ 和}。但在这种情况下,整个字符串不匹配的原因是因为a}\o{a 中的大括号不符合LaTeX 规则(例如{ 必须在} 之前),因此a}\o{a 不能作为参数运营商...
Edit2:另一方面,\o{{a}}{b} 应该是匹配的,因为 {a} 是一个有效参数。
【问题讨论】:
-
3 个答案在 21 秒之内。正则表达式忍者今天生效!
标签: php regex latex non-greedy