我正在尝试用python过滤文本
import re
text = "Fast charging 25W, USB Power Delivery 3.0, Fast Qi/PMA wireless charging 12W, Reverse wireless charging 4.5W"
regex = re.compile("\w+\s\w+harg\w+\s\d+W")
mc = regex.findall(text)
print(mc)
结果是
['Fast charging 25W', 'wireless charging 12W']
但是,我要做的是让所有事件以*W结尾”
['Fast charging 125W', 'Fast Qi/PMA wireless charging 12W', 'Reverse wireless charging 4.5W']
数字可以大得多(如充电1250W) 我在谷歌上搜索了将近2个小时,搜索了很多关于regexp的文档,但都是徒劳的。任何帮助都将不胜感激
多谢各位
您正在寻找单词边界,如果我理解正确,逗号之间的所有内容:
W
,后跟单词边界\b
Online Demo, 代码示例:
这将捕获前面有一个或多个数字的所有W
代码:
输出:
您可以用一个单词字符开始匹配,在不是逗号的字符之间进行匹配,然后至少匹配W前面的一个数字
解释
(?<!\S)
在左侧断言空白边界[^,]*
匹配除,
之外的任何字符的0+次出现次数\bcharg\w+\b
一个单词边界,匹配charg
后跟1+单词字符和单词边界[^,]*
匹配除,
之外的任何字符的0+次出现次数\dW\b
至少匹配一个后跟W
和单词边界的单个数字Regex demo
输出
或者,如果在具有
W
的部分中只能有数字,则可以排除匹配的数字[^,\d]
,也可以选择匹配小数部分(?:\.\d+)?
Regex demo
相关问题 更多 >
编程相关推荐