2016-08-11 12 views
1

I'm с помощью следующей RegEx разделить строку на ключи и значения:RegEx проблемы с двойными кавычками

Струнные:

type="post" id="1" text="Blog Post" 

Regex:

/(?<name>\\S+)=["']?(?P<value>(?:.(?!["']?\\s+(?:\\S+)=|[>"']))+.)["']?/u 

Это работает нормально, если каждое значение имеет минимум 2 символа. Я значение только 1 символ длинный (например, здесь). Я получаю цитату после номера. Так что для этого примера с идентификатором я получаю следующий результат:

type => post 
id => 1" 
text => Blog Post 

I've не зная, где моя ошибка в регулярном выражении. Может, кто-нибудь может дать мне подсказку?

Большое спасибо!

+0

Похоже, вы пытаетесь разобрать разметку с регулярным выражением, что никогда не является хорошей идеей. Для разметки вам нужен парсер DOM. –

+0

Нет, я не разбираюсь в DOM. Я ищу Shortcodes (например, Wordpress) в тексте для его обработки. – Michael

ответ

1

Я думаю, что последний момент лишний. Не могли бы вы попробовать это:

/(?<name>\\S+)=["']?(?P<value>(?:.(?!["']?\\s+(?:\\S+)=|[>"']))+)["']?/u 

Я не konw, как вы используете это регулярное выражение, но я думаю, что вы можете использовать эту опцию:

/(\w+)=["']?([^"']+)["']/ug 

Или предоставить мне больше информации.

+0

Hm .. Я создал страницу regex101, где вы можете увидеть проблему (атрибут «ошибка»): https://regex101.com/r/yX2uW2/1 – Michael

Смежные вопросы