Как сделать негативный взгляд вперед необязательным

Я хочу регулярное выражение, которое позволяет:

  • строка из одного или нескольких символов слова
  • ... который заканчивается необязательным символом равенства, при условии, что за самим знаком равенства следует символ, не являющийся словом (например, кавычка)

Прохождение (хорошо):

dHlwZT1jJmFjY291bnQ9MSZjYW1wYWlnbj0xJnByb3NwZWN0PTEmd29ya2Zsb3c9MSZ0ZdddbGF0ZT0xJnVybD1odHRwFadsjasdJGJTJGcGluZ29tZXRlci5jb20=

dHlwZT1jJmFjY291bnQ9MSZjYW1wYWlnbj0xJnByb3NwZWN0PTEmd29ya2Zsb3c9MSZ0ZW1wbGF0ZT0xJnVASdfjhksdwJTNBJTJGJTJGcGluZ29tZXRlci5jb20="

Не проходит (плохо) – = в конце можно не указывать:

dHlwZT11JmFjY291bnQ9asdfasdfjnYW1wYWlnG0xJnByb3NwZWN0PTEmd29ya2Zsb3c9MSZ0ZW1wbGF0ZT0x

Не проходит (хорошо):

dHlw=ZT1jJmFjY291bnQ9MSZjYW1wYWlnbj0xJnByb3NwZWN0PTEmd29ya2Zsb3c9MSZ0ZW1wbGF0ZT0=xJnVybD1asdfasdfsadfwJTNBJTJGJTJGcGluZ29tZXRlci5jb20=3D

Вот что у меня есть до сих пор:

Регулярное выражение:

([\w]+)=(?!\w)

Демо:

http://rubular.com/r/JgPKSaJIri


person okoboko    schedule 04.08.2015    source источник
comment
ваш первый проходной образец заканчивается знаком равенства, за которым ничего не следует. Это не то, что требует ваше описание. Что правильно?   -  person Amit    schedule 04.08.2015
comment
@Amit, это приемлемо. поэтому ...ABC= или ...ABC=" должны быть допустимыми, а ...A=BC — нет.   -  person okoboko    schedule 04.08.2015


Ответы (3)


Что-то вроде

([\w]+)=?(?=\W$)

Внесены изменения

  • Мы можем использовать положительный прогноз для всего, кроме \w (то есть \W)

  • Добавьте $, чтобы закрепить регулярное выражение в конце строки.

Демонстрация регулярных выражений

person nu11p01n73R    schedule 04.08.2015
comment
Спасибо! Так близко - я просто хочу включить знак равенства в результат совпадения, если он действителен. - person okoboko; 04.08.2015
comment
@okoboko Извините за это, просто переместите = наружу, это также захватит =. Исправил в ответ. - person nu11p01n73R; 04.08.2015

Вы можете попробовать так:

^\w+=?\b\W*$
person Pradeep Kumar    schedule 04.08.2015