Удалите скобки, если длина> максимальная длина - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть несколько моделей, таких как

"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"

Мне удалось получить содержимое скобок с помощью этого регулярного выражения

\((.+?)\)

Однако регулярное выражение возвращает обе скобки.

Есть ли способ получить только текст, длина которого превышает количество символов?

Вот пример регулярного выражения.

Ответы [ 3 ]

0 голосов
/ 17 декабря 2018

Используйте подстановку регулярных выражений и 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)) на месте.

0 голосов
/ 17 декабря 2018

Вы можете использовать некоторый текст, который обязательно присутствует в ваших первых скобках, а не во вторых скобках, как косая черта / и изменить свое регулярное выражение с

\((.+?)\)

на

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

И замените его пустой строкой.

Live Demo

0 голосов
/ 17 декабря 2018

Вы можете использовать это регулярное выражение для сопоставления (...), если между ( и ):

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

обновлено демо RegEx

Подробности RegEx:

  • [^)]: соответствует любому символу, кроме )
  • {6,}: квантификатор соответствует 6 или более символов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...