2012-07-10 55 views
2

我在openoffice中有一个大约3000行的数据集,每个集合可以包含(XXXv)pandanthesis内的数据,其中XXX可以是任何3位数字(通常为110,220,115,120)正则表达式在括号中提取数据

我需要简单地忽略该字段中的所有内容,并只查找/替换为仅值。

其他paranthesis可能存在于数据中。大多数数据都是HTML格式的,目前在csv文件中。某些字段也可能不包含值。

EX: ITEM NUMBER 38 (115v) - (SKU) 
(simplified, many will be 100-1000 characters in length, in html) 

= IF语句也可能工作?

回答

1

乍一看,正则表达式似乎是最好的选择。正则表达式应该类似.*\(([0-9][0-9][0-9])v\).*。被捕获的组将是您正在查找的值。

+0

。* \(([0-9] [0-9] [0 -9])v \)。* 第三个值之后是否需要第二个palenthesis?我对正则表达式不够了解,但只是看它有点建议? 。* \(([0-9] [0-9] [0-9]))v \)。* 另外,我会在“替换”字段? 编辑:它不需要第二个palenthesis,没有看到1在结尾:) – NRGdallas 2012-07-10 18:02:49

+0

围绕数字的括号捕捉它。转义的括号与字符串中的实际字符匹配,将XXX从“...(XXXv)...”中拔出。您可以用第一个捕获的组'\ 1'替换。 – 2012-07-10 18:06:55

+0

替换为\ 1似乎不工作,它只是将整个字符串替换为值“\ 1” http://screencast.com/t/HZEV2iLC1Uk – NRGdallas 2012-07-10 18:09:46

0

使用本正则表达式替换(?<=\()\d{3}(?=v\)) 如果你的正则表达式引擎不知道回顾后,使用=\(\d{3}v\)与替换(value V)

+0

我可能会丢失一些东西,但如果字符串是“项目编号213(124v)(121)”,会发生什么? – 2012-07-10 18:05:07

+0

将被选中只有3位数,“项目编号'213'('124'v)('121')”我标记匹配 – 2012-07-10 18:07:29

+0

但是OP只希望124. – 2012-07-10 18:18:11