Здравствуйте, ламмму, Вы писали:
Л>Помогите с регулярным выражением, есть такой текст:
Л>[q]bla bla <input type="text" value="bla bla >bla"> bla bla[q]
Л>нужно выдрать тег(<...>) целяком (т.е. с учетом того что в кавычках не учитывать закрывающую скобку ">")
Это невозможно сделать при помощи регулярного выражения.
Здравствуйте, Smal, Вы писали:
S>Здравствуйте, ламмму, Вы писали:
Л>>Помогите с регулярным выражением, есть такой текст:
Л>>[q]bla bla <input type="text" value="bla bla >bla"> bla bla[q]
Л>>нужно выдрать тег(<...>) целяком (т.е. с учетом того что в кавычках не учитывать закрывающую скобку ">") S>Это невозможно сделать при помощи регулярного выражения.
сначала c помощью тех же re заменяешь все '<', '>' внутри парных кавычек на что-нибудь.
потом можно поробовать так(это perl-like syntax, должен работать в boost::regex):
КЛ>сначала c помощью тех же re заменяешь все '<', '>' внутри парных кавычек на что-нибудь. КЛ>потом можно поробовать так(это perl-like syntax, должен работать в boost::regex):
КЛ>(<.*>)?
КЛ>а затем заменяешь '<', '>' обратно
Спасибо, видимо это действительно самый лучший и красивый метод !
Здравствуйте, Константин Л., Вы писали:
КЛ>(<.*>)?
КЛ>а затем заменяешь '<', '>' обратно
А если внутри кавычек есть \"? или <<>><>>>?
Эта задача не решается при помощи регулярных выражений
(по крайней мере в общем случае).
Здравствуйте, ламмму, Вы писали:
Л>Помогите с регулярным выражением, есть такой текст:
Л>[q]bla bla <input type="text" value="bla bla >bla"> bla bla[q]
Л>нужно выдрать тег(<...>) целяком (т.е. с учетом того что в кавычках не учитывать закрывающую скобку ">")
Так в чем проблема-то?
Текст в кавычках (атрибуты HTML) определить легко, там ведь нет \":
$q = '"[^"]*"';
Для случая \" так:
$q_cstyle = '"([^\\"]|\\.)*"';
Итак, если у нас есть строка, первый символ которой '<', и нужно найти конец тега, то всё просто:
/^\<([^">]|$q)\>/o
P. S. AFAIR символ '>' в тегах недопустим, даже в кавычках. Для этого есть >.
Здравствуйте, ламмму, Вы писали:
КЛ>>сначала c помощью тех же re заменяешь все '<', '>' внутри парных кавычек на что-нибудь. КЛ>>потом можно поробовать так(это perl-like syntax, должен работать в boost::regex):
КЛ>>(<.*>)?
КЛ>>а затем заменяешь '<', '>' обратно
Л>Спасибо, видимо это действительно самый лучший и красивый метод !
<tag prop="Quote: \". Let's do it ==>"/><tag prop="More ' quote"/>
Чего-чего? Я конкретно вот такой пример имел ввиду (\" просто так вставил):
<tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
<tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
<tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
Здравствуйте, Vladimir D Belousov, Вы писали:
VDB>Чего-чего? Я конкретно вот такой пример имел ввиду (\" просто так вставил): VDB>
<tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
<tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
<tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
Чего-чего? (c)
Из этого всего правильно только так: <tag prop="Let's do it ==>" />
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, Vladimir D Belousov, Вы писали:
VDB>>Чего-чего? Я конкретно вот такой пример имел ввиду (\" просто так вставил): VDB>>
RO><tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
RO><tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
RO><tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
RO>
RO>Чего-чего? (c)
RO>Из этого всего правильно только так: <tag prop="Let's do it ==>" />
Вот и я про то же.
Но разве здесь нет знаков < или > внутри парных кавычек?
<tag prop="Let's do it ==>"/><tag prop="More ' quote"/>
Здравствуйте, Vladimir D Belousov, Вы писали:
VDB>>>
<tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
<tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
<tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
RO>>Из этого всего правильно только так: <tag prop="Let's do it ==>" />
VDB>Вот и я про то же. VDB>Но разве здесь нет знаков < или > внутри парных кавычек? VDB><tag prop="Let's do it ==>"/><tag prop="More ' quote"/>
Однозначно нет. Сначала XML/HTML/XHTML парсится на теги по «<»/«>», потом только все &xxx; заменяются на то, что они обозначают.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, Vladimir D Belousov, Вы писали:
VDB>>>>
RO><tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
RO><tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
RO><tag prop="Let's do it ==>"/><tag prop="More ' quote"/> =>
RO>
RO>>>Из этого всего правильно только так: <tag prop="Let's do it ==>" />
VDB>>Вот и я про то же. VDB>>Но разве здесь нет знаков < или > внутри парных кавычек? VDB>><tag prop="Let's do it ==>"/><tag prop="More ' quote"/>
RO>Однозначно нет. Сначала XML/HTML/XHTML парсится на теги по «<»/«>», потом только все &xxx; заменяются на то, что они обозначают.
А, в этом контексте — да, не спорю.
Просто в исходном посте шел разговор про простой текст.
Здравствуйте, Smal, Вы писали:
S>Здравствуйте, Константин Л., Вы писали:
КЛ>>(<.*>)?
КЛ>>а затем заменяешь '<', '>' обратно S>А если внутри кавычек есть \"? или <<>><>>>?
\" — не заменяем, <> недопустимые символы внутри значений тегов и аттрибутов. При правильном HTML должно сработать
S>Эта задача не решается при помощи регулярных выражений S>(по крайней мере в общем случае).
<> недопустимые символы внутри значений тегов и аттрибутов. При правильном HTML должно сработать
и тем не менее браузеры нормально кушают эту конструкцию, а мне нужно отпарсить около сотни документов, и как известно большая доля документов не придерживается никаких стандартов...