Нужно составить не просто регулярное выражение - PullRequest
1 голос
/ 31 октября 2019

Не могли бы вы помочь мне составить регулярное выражение. Мне нужно найти указанный символ (например, +) со всеми пробелами до и / или после него (должен быть минимум один пробел), если он не в двойных или одинарных кавычках. И замените все это на другой символ (например, #).

Я пробовал несколько вариантов регулярных выражений, таких как:

(("[^"]*"|'[^']*')(*SKIP)(*FAIL))|\s*\+\s*
(\s+[+]|[+]\s+)(?=(?:[^"']|"[^"']*")*$)

Но они не работают так, как мне нужно (

Вот пример входного текста:

$input_text:
+ Som+e text + asd + 56, 'here + we don't+ replace + ' +45 - "end + here don't replace +" + dfg
+ Som+e text + asd + 56, "here + we don't+ replace + " +45 - 'end + here don't replace +' + dfg
+ Som+e text + asd + 56, "here + we don't '+ ' replace + " - end +

// Это регулярное выражение просто пример, его нужно составить так, чтобы получить пример $ output_text

$output_text = preg_replace('/(\s+[+]|[+]\s+)/', '#', $input_text);

И мы должныполучить этот результат:

$output_text:
#Som+e text#asd#56, 'here + we don't+ replace + '#45 - "end + here don't replace +"#dfg
#Som+e text#asd#56, "here + we don't+ replace + "#45 - 'end + here don't replace +'#dfg
#Som+e text#asd#56, "here + we don't '+ ' replace + " - end#
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...