2013-10-04 2 views
0

Если у меня есть какой-то текст, я рылась в поиске конкретного атрибута, как я могу обрезать текст на линии перед ним:матч ничего на несколько строк, то строка текста

, например:

aoidj 
aodifjiao 
<img src="asdf.asdf" id="a1" /> 

(\n*|(.*\n*))(.*?)src="(.+?)".* кажется, что он должен соответствовать новым линиям или любому текст с новой строкой в ​​конце, а затем найти свой атрибут src, но вместо того, чтобы заменить с \4 получает мне мой атрибут Src, но по-прежнему оставляет содержимое на линий выше.

+0

Я прочитал это в 3 раза, и я до сих пор не могу понять, что именно вы хотите. –

+0

@JoeSimmons матч на что угодно до 'src' – 1252748

ответ

0

Попробуйте следующее выражение:

(?:[^s]|src="([^"]*)".*)* 

и заменить $1.

Это выражение соответствует либо символ, который не является s с помощью [^s], или она соответствует src и то, что следует за ним, применяя звезду * ко всей группе это начинается с сопоставления ничего, что не является s до тех пор, если не найдет единственное, что начинается с s, и о котором мы заботимся, src.

Теперь он фиксирует значение src в группу 1, затем соответствует всем, что есть после него, с использованием .*.

Итак, теперь все соответствует, и значение атрибута src зафиксировано в $1.

Regex101 Demo

+0

Sniffer, это отлично работает, можете ли вы сломать его немного для меня, пожалуйста. Спасибо. – 1252748

+0

@thomas Я изменил свой ответ, пожалуйста, проверьте правильность. –

+0

Я вижу. Как я мог сделать эту динамику. Например, если я не знаю, буду ли я искать src или id или rurl? – 1252748

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