В R что такое регулярное выражение для удаления скобок с указанным c словом в начале, которое также может иногда иметь вложенные скобки внутри них? - PullRequest
0 голосов
/ 22 февраля 2020

Я действительно отстой с регулярным выражением, поэтому заранее извиняюсь.

Я знаю, что если я сделаю

StringFeat = "I am a feat with (feat including feat feet))"
removefeatTest = stringr::str_replace_all(StringFeat, "\\(.*?\\)", "")

, то получится "Я подвиг с)". Вместо этого я хотел бы, чтобы это было «Я подвиг с».

Другой пример входной строки - «(feat. DO C., Доктор Рок, Fre sh K (Fila Fre *»). 1015 * Crew)) бла-бла-бла ", я хотел бы, чтобы вывод был" бла-бла-бла ".

В то же время, надеюсь, это регулярное выражение также может обрабатывать скобки без вложенных скобок, например" (feat. DO C.) ". Но я хотел бы обратить особое внимание на "(feat", чтобы другие скобки типа "(this" не запускались регулярным выражением.

Возможно ли это с помощью регулярного выражения? Заранее спасибо.

1 Ответ

1 голос
/ 22 февраля 2020

Здесь у вас есть 2 закрывающие скобки. Код, который вы используете, удалит только один. Вы можете использовать что-то вроде:

removefeatTest = stringr::str_replace_all(StringFeat, "\\(.
   *?\\)+", "") 

, что также работает со вторым примером, который вы упомянули:

StringFeat = "(feat. The D.O.C., Dr. Rock, Fresh K (Fila Fresh Crew)) blah blah blah"                                 

stringr::str_replace_all(StringFeat, "\\(.*?\\)+", "")     
[1] " blah blah blah"

, и вы можете выбрать выражение, начинающееся с "(feat", используя:

stringr::str_replace_all(StringFeat, "^\\(feat.*?\\)+", "")     
[1] " blah blah blah"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...