2014-10-16 4 views
2

Я пытаюсь найти регулярное выражение для распознавания экземпляров 2, 4, 6, 8, (и т. Д.) Заданного символа в строке ,Регулярное выражение для распознавания четного числа символов-символов в строке

Я использую регулярное выражение vbscript.

В моем конкретном случае я ищу, чтобы удалить/заменить экземпляры четных чисел последовательных символов одной кавычки внутри строки.

Кажется, я не могу понять, как сделать его достаточно надежным, чтобы найти экземпляры любого кратного 2 без жесткого кодирования.

В кодировании с не регулярным выражением я бы нашел экземпляры двух или более последовательных одинарных кавычек, прокручивал каждый экземпляр и делит счет одинарных кавычек на 2. Если он разделяет равномерно, то его совпадение, а если нет , то это не совпадение. Мне нужна помощь, чтобы перевести эту логику в более простое регулярное выражение.

Примеры:

"it''s a lovely day"  --> should find one match group 
"it's a lovely day"  --> no match 
"it'''s a lovely day"  --> no match 
"it''''''''s a lovely day" --> match 

Спасибо заранее.

ответ

2

Выражения вы ищете это:

[^']('')+[^'] 

Он ищет четное число одиночных кавычек (('') = две одинарных кавычек, + = наблюдаемые по крайней мере один разы), между двумя символами, которые не являются одинарными кавычками ([^'] = символьный класс, состоящий из любого символа, но не одинарной).

Демо-версия: http://regex101.com/r/wV6vE5/1