我尝试用regexp在Sublime Text文本编辑器中获取标记之间的数字(ONLY),但它不起的作用
(?<=<p>).*(?=</p>)
<p>abcdefg 1234.5 hijklmnop.</p></br>
是在之间工作的全文
([0-9]*,?[0-9]*)
适用于数字、所有文本块和其他标记。
(?<=<p>)([0-9]*,?[0-9]*) (?=</p>) - Is not works
如何将这两个表达式合并为一个?
我需要它来进行大规模的数字样式
Thanx
使用您想要的模式,您需要将数字模式匹配与您在第一个模式中使用的通配符匹配(除了它们在这里是非贪婪的)包装起来:
(?<=<p>).*?([0-9]*,?[0-9]*).*(?=</p>)
我会使用这个正则表达式:
[0-9]*,?[0-9]+(?=[^<>]*</p>)
参见演示
[0-9]*
-0位或更多数字(允许,001
值),?
-可选分离器,
[0-9]+
-1个或多个数字(?=[^<>]*</p>)
-前瞻性检查我们在<p>
标签内(前面没有关闭</p>
标签)
但是,如果<p>
标签中有标签,则需要使用延迟匹配:
[0-9]*,?[0-9]+(?=(?:(?!</?pb)[sS])*</p>)
另一个演示
你试过这样的东西吗?
(?<=<p>D*?)d+(?=D*?</p>)
也就是说:在查找中,假设<p>
后面跟着0个或多个非数字(非贪婪)。匹配任意数量的数字(但至少一个),然后假设(前瞻性)后面可能有非数字(非贪婪),并且必须是</p>
。
我非常确信尽管你想实现的事情可以做得更简单,没有这些混乱。
现在我想起来了,我记得Sublime的正则表达式引擎对lookahead中的量词有限制。。。