为什么是grep -noE'< math>。*< / math>'匹配
< math> w< / math>,来自一组< math> w< / math> 特殊二进制分数,< math> V_i,i = 1,2,\ dots, W< /数学>叫方向号。 [[格雷码]]的位 使用< math> i< / math>,< math> G(i)< / math>, 选择方向号。获取Sobol序列值 <数学> S_I< /数学>取二进制的[[exclusive or]] < math> i< / math>格雷码的值随着 适当的方向号码。所需的尺寸数量 影响< math> V_i< / math>的选择 37196767:其中数学> \ int_0 ^ 1 f(u)\,du \ approx \ frac {1} {N} \,\ sum_ {i = 1} ^ N f(x_i)。 < /数学>
我只想让每个元素独立,而不是贪婪。
答案 0 :(得分:3)
您需要指定非贪婪版本:.*?
,但grep
正则表达式不支持它。
如果您使用GNU grep,则可以使用-P
选项(或--perl-regexp
):
grep -noP '<math>.*?</math>'
答案 1 :(得分:2)
使用:
grep -noE '<math>[^<]*</math>'
不是在<math>
和</math>
之间匹配任何序列,而是在序列中不允许<
,因此它不允许</math>
在内部。{ / p>
它也不会允许任何其他标签,但看起来这对您的文字来说不是问题。
如果您使用的是支持PCRE的工具,则可以使用非贪婪的正则表达式:
<math>.*?</math>
标准版grep
不使用PCRE,但如果您使用GNU grep,则可以使用-P
选项。
答案 2 :(得分:1)
由于.*
是贪婪的,因此它会从首次找到的<math>
到最后找到的</math>
匹配