我尝试在Sublime Text文本编辑器中使用regexp获取标签之间的数字(仅限),但它不起作用
(?<=<p>).*(?=</p>)
<p>abcdefg 1234.5 hijklmnop.</p></br>
适用于
之间的全文
([0-9]*\,?[0-9]*)
适用于数字以及所有文本块和其他标记。
(?<=<p>)([0-9]*\,?[0-9]*) (?=</p>) - Is not works
如何将这两个表达式合并为一个?
我需要大量改变数字的方式
感谢名单
答案 0 :(得分:1)
使用您想要的模式,您需要将数字模式匹配与您在第一个模式中使用的外卡匹配(除非它们非贪婪):
(?<=<p>).*?([0-9]*\,?[0-9]*).*(?=</p>)
答案 1 :(得分:0)
你尝试过这样的事吗?
(?<=<p>\D*?)\d+(?=\D*?</p>)
即:在后视中,假设<p>
后跟0或更多非数字(非贪婪)。匹配任意数量的数字(但至少有一个),然后假设(预测)非数字可能跟随(非贪婪),并且必然是</p>
。
我非常确定虽然你想要实现的目标可以更简单,但没有这一切。
现在我想起来了,我想我记得Sublime的正则表达式引擎在前瞻中有量词的限制......
答案 2 :(得分:0)
我会使用这个正则表达式:
[0-9]*,?[0-9]+(?=[^<>]*<\/p>)
请参阅demo
[0-9]*
- 0位或更多位数(允许,001
值),?
- 可选分隔符,
[0-9]+
- 一位或多位(?=[^<>]*<\/p>)
- 前瞻检查我们是否位于<p>
标记内(前面有mot </p>
标记)。但是,如果您在<p>
标记内有标记,则需要使用延迟匹配:
[0-9]*,?[0-9]+(?=(?:(?!<\/?p\b)[\s\S])*<\/p>)