如何删除除价格以外的所有内容?

时间:2014-04-03 23:32:54

标签: regex sublimetext2 notepad++

我有一个凌乱的清单,我正试图摆脱价格之外的所有东西,前面有一个美元符号$。

但它们的位数不同。有些是“$ X.XX”,有些是“$ XX.XX”

如果可能的话,我希望能够在价格之间插入一个“+”,所以它看起来像“$ X.XX + $ XX.XX + ......”

我尝试搜索,但解决方案对我不起作用(尽管他们使用的是英镑符号,可能需要不同的查询)

2 个答案:

答案 0 :(得分:0)

与您的价格相匹配的正则表达式将是

\$\d+\.\d+

其中\$是一个美元符号(记住你需要转义它,因为只有$表示字符串结束,\d+表示至少有一个数字,\.一个点(再次,逃避,因为.表示任何角色)

这将匹配 $1.2$24.67

在Sublime Text中,您可以使用Find-Replace

删除其他所有内容

查找:.*(\$\d*\.\d*).*

替换:$1

示例

product1 $14.22 categoryA
product2 $5.2 categoryA
product3 $0.2456 categoryB

会变成

$14.22
$5.2
$0.2456

答案 1 :(得分:0)

你可以使用它(应该使用notepad ++):

search: (?>[^$]+|\$(?!\d{1,2}\.\d{2}))*(\$\d{1,2}\.\d{2})
replace: $1+

(或search: .*?(\$\d{1,2}\.\d{2})

然后手动删除最后的+