【问题标题】: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 语句也可能有效?

【问题讨论】:

    标签: regex excel openoffice-calc


    【解决方案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】:

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

    【讨论】:

    • 我可能遗漏了一些东西,但是如果字符串是“ITEM NUMBER 213 (124v) (121)”会发生什么?
    • 只会选择 3 位数字,“ITEM NUMBER 213 (124v) (121)”我标记匹配项
    • 但是 OP 只想要 124。
    猜你喜欢
    • 1970-01-01
    • 2012-10-18
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    相关资源
    最近更新 更多