2013-06-11 3 views
0

Я использую Notepad ++ и используя ниже регулярное выражение идентичности правильности "типа"Regex найти не являющихся матчи

Regex:

<a class="web" type="([a-z]+)([0-9]+)"> 

Текст, который я ищу нижеперечисленным

<a class="web" type="fig1">Fig 1</a> 

С приведенным выше регулярным выражением я проверяю правильность как «типа», так и значения, которое было помечено (т. Е. Type = «fig1», соответствующее помеченному значению Рис. 1 или нет).

Большинство случаев (приблизительно 98% будет правильным) и только несколько случаев, которые мне нужно исправить, например, от <a class="web" type="fig1">Fig 4</a> до <a class="web" type="fig4">Fig 4</a>.

Может кто-нибудь помочь мне, предоставив регулярное выражение, чтобы найти несоответствующие значения, как указано в моем последнем параграфе.

+0

Вы можете попытаться создать регулярное выражение, которое будет содержать только недопустимые символы – jtomaszk

ответ

2

Вы можете проверить, что с помощью блокнота ++:

search: <a class="web" type="fig(\d+)">Fig (?!\1)\d+</a> 

И вы можете сделать replaceAll:

search: (<a class="web" type="fig)(\d+)(">Fig (?!\2)(\d+)</a>) 
replace: $1$4$3 

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

search: (<a class="web" type="fig)\d+(">Fig (\d+)) 
replace: $1$3$2 
+0

Hm? Конечно, Notepad ++ поддерживает обратные ссылки. –

+0

@ m.buettner: вы правы, но обратите внимание, что вы не можете использовать обратную ссылку перед группой захвата. –

+0

Конечно, но почему это так важно? Кроме того, вы никогда не сможете этого сделать, если не в цикле (в некоторых вариантах). –