2015-09-01 2 views
1

Я пытаюсь создать строку регулярных выражений, которая, похоже, не подходит.Regex и exlude совпадения с строкой «this»

Я хочу, чтобы соответствовать всем строкам, содержащих -AS- И -CO, исключая -DC-

CCO-AS-02-CO 
EKY-2F-AS-02-CO 
LKS-AS-06-CO 
LKS-AS-DC-07 
LKS-AS-52-CR 
ATX-A2-DC-AS-08-CO 
BAL-0F-AS-06-CO 
BAL-2F-AS-03-CO 
CNC-1F-AS-05-CO 

Я не знаком с тем, как выполнить и не знать, что это работает для содержащих кусков: (.*AS.*CO)

Помогите?

+0

Какой язык программирования или текстовый редактор вы используете для выполнения регулярного выражения? Различные реализации регулярных выражений имеют разные функции. –

+0

Perl, Извините, должен был включить это :) – BilliAm

ответ

1

Вы можете сделать это чисто с lookaheads:

^(?=.*-AS-)(?=.*-CO)(?!.*-DC-).*$ 

           ^^ a line with: 
         ^^^ do not have -DC- in the line 
       ^^^ do have -CO 
    ^^^ do have -AS- 
^ Anchor, start of line 

Demo

три условия могут быть в любом порядке на линии.

2
^(?!.*-DC-).*-AS-.*-CO.*$ 

Вы можете использовать lookahead. См. Демонстрационный ролик.

https://regex101.com/r/sS2dM8/32

+0

Работает только в том случае, если '-AS-' продолжает '-CO' в строке ... – dawg

0

Если AS и CO может быть из того, это может обнаружить их присутствие.

^(?!.*-DC(?=-|$))(?=.*-AS(?=-|$))(?=.*-CO(?=-|$)).+$ 
Смежные вопросы