2008-09-29 3 views
31

например: <a><strike>example data in here</strike></a>REGEX: не Схватив все до конкретного слова

Я хочу, чтобы все внутри тега, до конца

/<a>([^<]*)<\/a>/ 

Он работает, когда нет никаких дополнительных тегов в пределах <a> тега, но что, если есть?

Я хочу знать, можете ли вы это сказать, чтобы захватить все до [^</a>] вместо [^<].

Выполнение этой задачи /<a>(.*)<\/a>/ не работает. Иногда я получаю все в теге <a>, а иногда я получаю тонны линий, включенных в этот звонок.

ответ

78
/<a>(.*?)<\/a>/ 

должно работать. ? делает его ленивым, поэтому он хватает как можно меньше, прежде чем сопоставлять часть </a>. но используя. будет означать, что он соответствует всем, пока не найдет </a>. Если вы хотите, чтобы быть в состоянии соответствовать по линии, вы можете использовать следующее, если с preg_match

/<a>(.*?)<\/a>/s 

«S» в конце ставит регулярное выражение в режиме «однолинейной», что означает. символ соответствует всем символам, включая новые строки. См. other useful modifiers

+0

Да, это намного лучше, чем мой ответ. Это работает. – 2008-09-29 00:30:50

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