Как игнорировать пробелы и возврат каретки в тексте с помощью регулярных выражений - PullRequest
1 голос
/ 26 августа 2010

Я совершенно новичок в stackoverflow, поэтому я не знаю, задавался ли этот вопрос раньше, но я не могу найти какие-либо прошлые вопросы, которые намекают на ответ.Любая помощь очень ценится и спасибо заранее.

У меня есть этот текст:

{
   1282837200, -- [1]
   "Type", -- [2]
   "Name", -- [3]
   "Reason", -- [4]
   Amount, -- [5]
  }, -- [1]
  {
   1282838220, -- [1]
   "Type", -- [2]
   "Name", -- [3]
   "Reason", -- [4]
   Amount, -- [5]
  }, -- [2]

, для которого мне нужно создать регулярное выражение и извлечь необходимые данные.Я понимаю, как извлечь данные из исходных файлов с помощью регулярных выражений в PHP, используя исходный текст, который не имеет «пробелов» или переносов.

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

Ответы [ 2 ]

0 голосов
/ 26 августа 2010

Если вы пытаетесь просто удалить все пробелы, попробуйте следующее: $string = preg_replace('/\s+/s', '', $string);.

\s+ соответствует одному или нескольким пробелам, символам табуляции и переводам строки.s в /s указывает регулярному выражению смотреть на строку в целом, а не на одну строку за раз.

0 голосов
/ 26 августа 2010

\s - это символ для пробела, который может включать или не включать символы новой строки, в любом случае для них есть [\r\n], игнорируйте их и все.Вы также можете сказать, что именно вы хотите сделать, или даже опубликовать регулярное выражение, которое у вас есть, так что я могу помочь вам, если хотите.:

/\s*{[\s\n\r]*^\s*(\d+).*[\s\n\r]*^\s*"([^"]+)".*[\s\n\r]*^\s*"([^"]+)".*[\s\n\r]*^\s*"([^"]+)".*[\s\n\r]*^\s*(\w+).*[\s\n\r]*^\s*},.*[\s\n\r]*^/m

Это соответствует одному блоку и игнорирует числа в скобках./m переключатель запускает многострочный режим.

...