Regexp все атрибуты, кроме данных, кроме пропуска - PullRequest
1 голос
/ 12 апреля 2011

Например, у меня есть текст:

Bla bla one two three <b> just another test Romans 12:5 </b>
Okay next line and next text Romans 12:5
And this text is important too Romans 12:5
<іmg src="/іmg.png" title="Romans 12:5" alt="Romans 12:5" someattr="Romans 12:5" />
<a title="Romans 12:5" href="/link.html">Romans 12:5</a>

Мне нужно поймать:

Romans 12:5

Но регулярное выражение должно опускать текст, помещенный в атрибуты (alt, title, любой)и пропустите текст, помещенный в теги <a>.

У меня есть подобное регулярное выражение, но оно ловит все, включая атрибуты, содержащие текст:

Romans(\?| |\.|\. |\.\r\n|\r\n)([0-9]{1,3}):([0-9]{1,3})

Кстати, я использую PHP preg_replace с этим регулярным выражением и этимтекст изменяется следующим образом:

<a href=\"http://site.com/Romans/\\7\\3#\\4\" target=\"Romans 12:5\">\\1</a>

Кто знает модернизированный способ сделать это?

Заранее спасибо!

1 Ответ

0 голосов
/ 12 апреля 2011
[^">]{1}(Romans \d{1,3}:\d{1,3})[^"<]{1}

Соответствует трем экземплярам Римлянам 12: 5 вне атрибутов и тегу <a>.

Редактировать: чтобы соответствовать дополнительным требованиям, вы можете использовать это:

(?:[^">]|^){1}(Romans \d{1,3}:\d{1,3})(?:[^"<]|$){1}

Если это по-прежнему не соответствует вашим потребностям, regexlib.com содержит множество регулярных выражений для всех видов сценариев, которые вы можете адаптировать в соответствии со своими потребностями, например this один .

...