正则表达式提取括号中的数据

Posted

技术标签:

【中文标题】正则表达式提取括号中的数据【英文标题】:Regular Expression to pull data in parenthesis 【发布时间】:2012-07-10 17:51:26 【问题描述】:

我在 openoffice 中有一个大约 3000 行的数据集,每组可能包含 (XXXv) 括号内的数据,其中 XXX 可以是任何 3 位数字(通常是 110、220、115、120)

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

数据中可能存在其他括号。大多数数据都是 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-9][0-9][0-9])v).* 在第三个值之后不需要第二个括号吗?我对正则表达式知之甚少,但只是看看它有点暗示? .*(([0-9][0-9][0-9]))v).* 另外,我会在“替换”字段中输入什么?编辑:它不需要第二个括号,最后没有看到 1 :) 数字周围的括号捕获它。转义的括号匹配字符串中的实际字符,从“...(XXXv)...”中提取 XXX。您可以替换为第一个捕获的组\1 用 \1 替换似乎不起作用,它只是将整个字符串替换为值 "\1" screencast.com/t/HZEV2iLC1Uk 通常\1 指的是括号捕获的值,但显然在OpenOffice 中并不那么容易。见oooforum.org/forum/viewtopic.phtml?t=61857。 这很麻烦 - 对于以后可能遇到此问题的任何人,只需将该列复制到记事本++,在那里运行,然后将其复制回 openoffice/excel。感谢您的帮助!【参考方案2】:

使用这个正则表达式替换(?<=\()\d3(?=v\)) 如果您的正则表达式引擎不知道后向,请使用 =\(\d3v\) 替换 (valuev)

【讨论】:

我可能遗漏了一些东西,但是如果字符串是“ITEM NUMBER 213 (124v) (121)”会发生什么? 只会选择 3 位数字,“ITEM NUMBER 213 (124v) (121)”我标记匹配项 但是 OP 只想要 124。

以上是关于正则表达式提取括号中的数据的主要内容,如果未能解决你的问题,请参考以下文章

c#用正则表达式提取小括号中的内容

怎样在scala正则表达式提取器中使用小括号

php 正则表达式 提取字符串内小括号中的数字,只要数字

正则表达式提取括号内的所有内容

正则提取中间的内容?

java正则表达式提取xxxx(yyyy)中的内容