У меня есть такая строка:

Word (mother) word 33 (453) word word 444 (4) word

Результат должен быть: (mother) (453) (4)

Я хочу сохранить скобки и удалить остальные слова в строке. Я пытаюсь это регулярное выражение, но не слишком хорошо :(

Поиск: \([^!(]*?\)|\(|\)

Заменить на: \1

3 ответа3

2
  • Ctrl+H
  • Найти что: (?:^|\G)(?:\h*\w+\h*)+(\(\w+\)\h*)|(?:\h*\w+)*$
  • Заменить на: $1
  • проверить обернуть
  • проверьте регулярное выражение
  • Заменить все

Объяснение:

  (?:^|\G)      # non capture group, beginning of line OR restart from last match position
  (?:           # non capture group
    \h*         # 0 or more horizontal spaces
    \w+         # 1 or more word characters
    \h*         # 0 or more horizontal spaces
  )+            # end group, may appear 1 or more times
  (             # start group 1
    \(\w+\)     # 1 or more word characters surounded by parenthesis
    \h*         # 0 or more horizontal spaces
  )             # end group 1
|               # OR
  (?:           # non capture group
    \h*\w+      # 0 or more horizontal spaces, followed by 1 or more word characters
  )*            # group may appear 0 or more times
  $             # end of line

Результат для данного примера:

(mother) (453) (4) 

1

первая замена

отредактирован:

.*?(\(.*?\))

с

\1

затем заменить

^(.*\)).*

с

\1

Окончательный вывод

(mother)(453)(4)
0

Простое регулярное выражение для извлечения слова с круглыми скобками:

\(([^)]+)\)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .