Примерно так должно получиться:
((stringA)|(stringB)|(stringC))-?([A-Za-z\d]*)
Это будет соответствовать: stringA-dataIWantfff
, stringBDataIWant
, stringC-DataIWant123
, но не stringD-DataIWant
, и будет соответствовать всему, кроме @
в stringC-DataIWant@
.
Проблема, с которой я сталкиваюсь, заключается в том, что в разделе data-i-want
вы включили тире (-
), которые вы не включили в свое исходное регулярное выражение. Я предполагаю, что data-i-want- не содержит тире. Если это так, то вы можете добавить его так:
((stringA)|(stringB)|(stringC))-?([A-Za-z\d\-]*)
Это будет соответствовать чему-то вроде: stringA-Data-I-Want
.