2017-02-08 11 views
0

Я хотел бы отфильтровать определенные поля, если они не соответствуют критериям. Проблема заключается в их последовательности. Я попытался следующие конструкции:Regex исключая слова в определенной последовательности

(EXCLUDING)(?!\(MONDAY)(.*MONDAY).* 

и

(EXCLUDING)(?!\()(.*MONDAY).* 

То, что я хочу добиться, чтобы найти фильтр, чем ловит EXCLUDING * MONDAY но если есть кронштейн между этими словами. То есть, я хочу, чтобы поймать:

EXCLUDING MONDAY 
EXCLUDING WEDNESDAY AND MONDAY 
EXCLUDING MONDAY AND WEDNESDAY 
EXCLUDING MONDAY (WEDNESDAY IS OK) 

но не

выражения выше, конечно, поймать все из них. Он должен быть запущен в R.

ответ

1

Как это?

mystrings <- c("EXCLUDING MONDAY", 
"EXCLUDING WEDNESDAY AND MONDAY", 
"EXCLUDING MONDAY AND WEDNESDAY", 
"EXCLUDING MONDAY (WEDNESDAY IS OK)", 
"EXCLUDING WEDNESDAY (MONDAY IS OK)") 

grepl("EXCLUDING[^\\(]+MONDAY", mystrings) 

> TRUE TRUE TRUE TRUE FALSE 
+0

совершенен, не знаю, почему я сосредоточился на отрицательного предпросмотра – Slav

0

Если вы просто хотите, чтобы соответствовать шаблону, где ( не должно происходить непосредственно перед MONDAY вы можете использовать отрицательное утверждение с просмотром назад. Ваше регулярное выражение было для негативного прогноза, поэтому оно не сработало правильно для (MONDAY.

strs <- c("EXCLUDING MONDAY", 
      "EXCLUDING WEDNESDAY AND MONDAY", 
      "EXCLUDING MONDAY AND WEDNESDAY", 
       "EXCLUDING MONDAY (WEDNESDAY IS OK)", 
       "EXCLUDING WEDNESDAY (MONDAY IS OK)") 

grepl("EXCLUDING.*(?<!\\()MONDAY", strs, perl=TRUE) 
# [1] TRUE TRUE TRUE TRUE FALSE 
+1

спасибо, я должен признать, я не пробовал отрицательный предпросмотр с <в R, как, когда я вошел в него в Regex онлайн редакторе заявляемого Java будет не узнайте его по какой-то причине - как вы могли убедиться сами по себе http://regexr.com. Я просто предположил, что если Java не сделал этого, R, скорее всего, отклонит – Slav

 Смежные вопросы

  • Нет связанных вопросов^_^