如果长度>最大长度,请删除括号

时间:2018-12-17 17:07:29

标签: regex

我有很多类似的模型

"Dell Inspiron 6 (i7-8550U/8GB/256GB/Radeon 520/FHD/W10)"
"Lenovo V130 (i5-7200U/4GB/128GB/FHD/W10) (2017)"
"Dell XPS 13 Touch (i7-8550U/16GB/512GB/UHD/W10)"

,我想删除提及规格的括号。

最终输出应该是这样

"Dell Inspiron 6"
"Lenovo V130 (2017)"
"Dell XPS 13 Touch"

我通过此正则表达式设法获得了括号内容

\((.+?)\)

但是,正则表达式返回两个括号。

有什么办法只能获取大于字符数的文本?

Here is a regex example.

3 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式来匹配(...)(之间有6个以上字符的)

\s*\(([^)]{6,})\)

Updated RegEx Demo

RegEx详细信息:

  • [^)]:匹配)以外的任何字符
  • {6,}:用于匹配6个或更多字符的量词

答案 1 :(得分:0)

使用正则表达式替换,并将sub替换为空字符串。例如,在Python中,您可以执行以下操作:

import re

name = 'Dell Inspiron 6 (i7-8550U/8GB/256GB/Radeon 520/FHD/W10)'
re.sub("\s\(.{5,}\)", "", name)

输出

'Dell Inspiron 6'

请注意,我使用的{5,}仅匹配具有5个或更多字符的副字符串,这将保留年份(例如(2017))。

答案 2 :(得分:0)

您可以利用某些肯定放在第一括号中而不是第二括号(例如斜杠/)中的文本,并更改​​正则表达式,

\((.+?)\)

 \((.*\/[^)]*?)\)

并将其替换为空字符串。

Live Demo