Как сопоставить все конкретные строки в квадратных скобках - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь сопоставить одинарные кавычки в квадратных скобках.

Мне нужно сопоставить все одинарные кавычки внутри [item: и ] во всей строке, чтобы удалить их.

Вот некоторые случаи:

НЕ удаляйте цитаты из:

  • 'text'
  • ['text']

Удалить ВСЕ цитаты из:

  • [item: 'test']

Пример:

  1. [test 'item'] должно остаться без изменений.
  2. [item: 'item'] становится [item: item]
  3. ['test'][item: first 'test'] становится ['test'][item: first test]
  4. [item: some 'random' text] становится [item: some random text]
  5. [item: 'test 'text 'random' quote'] становится [item: test text random quote]

ПРИМЕЧАНИЕ. Кавычки не попарно.Может быть нечетное количество кавычек.

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

С добавлением большего количества примеров, проблема стала яснее.

Просто, чтобы перефразировать проблему, вы хотите сопоставить только выражение в скобках, которое начинается с item:, и избавиться от любых одинарных кавычек в скобках.Выражение.

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

(\[item:)|(?!^)\G([^'\n]*)'+

и заменяя их соответствующим образом захваченными группами, равными \1\2* 1010.*

Объяснение:

  • (\[item:) - Начать с буквального совпадения [item: и захватить его в группе 1
  • | - Чередование
  • (?!^)\G - Соответствует концу предыдущей позиции совпадения
  • ([^'\n]*) - Соответствует любому необязательному тексту, не содержащему одинарных кавычек или новой строки, и захватывает его в group2 (вы можете удалить \n, хотя, как обычно, он выигралне является частью вашего входного текста)
  • '+ - соответствует одной или нескольким одинарным кавычкам, которые удаляются, поскольку они не захвачены ни в одной группе.

Демо

0 голосов
/ 08 апреля 2019

Это регулярное выражение может захватывать группу, содержащую скобки. Затем вам нужно только удалить содержащие скобки в зависимости от языка, который вы используете.

\[item:[^\]']*('[^']+')[^]]*]

Смотрите живой пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...