常用表达。从 <p></p> 标签之间的 txt 中获取数字
Regular expressions. Get numbers from txt between <p></p> tags
我尝试在 Sublime Text 文本编辑器中使用正则表达式获取标签之间的数字(仅),但它不起作用
(?<=<p>).*(?=</p>)
<p>abcdefg 1234.5 hijklmnop.</p></br>
在
之间对全文有效
([0-9]*\,?[0-9]*)
适用于数字以及所有文本块和其他标签。
(?<=<p>)([0-9]*\,?[0-9]*) (?=</p>) - Is not works
如何将这两个表达式合二为一?
我需要它来大量更改数字样式
谢谢
你试过这样的东西吗?
(?<=<p>\D*?)\d+(?=\D*?</p>)
即:在回顾中,假设 <p>
后跟 0 个或多个非数字(非贪婪)。匹配任意数量的数字(但至少一个),然后假设(前瞻)可能跟随(非贪婪)的非数字,并且必然是 </p>
.
我非常确定虽然你想要实现的目标可以更简单地完成,没有这些混乱。
现在回想起来,我想我记得 Sublime 的正则表达式引擎在 lookaheads 中对量词有限制...
使用你想要的模式,你需要用你在第一个模式中使用的通配符匹配(除了它们在这里是非贪婪的)包装数字模式匹配:
(?<=<p>).*?([0-9]*\,?[0-9]*).*(?=</p>)
我会使用这个正则表达式:
[0-9]*,?[0-9]+(?=[^<>]*<\/p>)
见demo
[0-9]*
- 0 位或更多位(允许 ,001
值)
,?
- 可选分隔符 ,
[0-9]+
- 1 个或多个数字
(?=[^<>]*<\/p>)
- 前瞻检查我们在 <p>
标签内(前面有 mot 关闭 </p>
标签)。
但是,如果您在 <p>
标签内有标签,则需要使用延迟匹配:
[0-9]*,?[0-9]+(?=(?:(?!<\/?p\b)[\s\S])*<\/p>)
我尝试在 Sublime Text 文本编辑器中使用正则表达式获取标签之间的数字(仅),但它不起作用
(?<=<p>).*(?=</p>)
<p>abcdefg 1234.5 hijklmnop.</p></br>
在
之间对全文有效([0-9]*\,?[0-9]*)
适用于数字以及所有文本块和其他标签。
(?<=<p>)([0-9]*\,?[0-9]*) (?=</p>) - Is not works
如何将这两个表达式合二为一?
我需要它来大量更改数字样式
谢谢
你试过这样的东西吗?
(?<=<p>\D*?)\d+(?=\D*?</p>)
即:在回顾中,假设 <p>
后跟 0 个或多个非数字(非贪婪)。匹配任意数量的数字(但至少一个),然后假设(前瞻)可能跟随(非贪婪)的非数字,并且必然是 </p>
.
我非常确定虽然你想要实现的目标可以更简单地完成,没有这些混乱。
现在回想起来,我想我记得 Sublime 的正则表达式引擎在 lookaheads 中对量词有限制...
使用你想要的模式,你需要用你在第一个模式中使用的通配符匹配(除了它们在这里是非贪婪的)包装数字模式匹配:
(?<=<p>).*?([0-9]*\,?[0-9]*).*(?=</p>)
我会使用这个正则表达式:
[0-9]*,?[0-9]+(?=[^<>]*<\/p>)
见demo
[0-9]*
- 0 位或更多位(允许,001
值),?
- 可选分隔符,
[0-9]+
- 1 个或多个数字(?=[^<>]*<\/p>)
- 前瞻检查我们在<p>
标签内(前面有 mot 关闭</p>
标签)。
但是,如果您在 <p>
标签内有标签,则需要使用延迟匹配:
[0-9]*,?[0-9]+(?=(?:(?!<\/?p\b)[\s\S])*<\/p>)