Регулярное выражение: как я могу наложить идеальное соответствие строк? - PullRequest
0 голосов
/ 17 апреля 2009

В настоящее время я использую это ( редактировать: я пропустил, чтобы объяснить, что я использую это для исключения именно этих слов: p ):

   String REGEXP = "^[^(REG_)?].*";

, но соответствует (исключая) также ERG, EGR, GRE и т. Д ... выше

P.S. Я удалил super, потому что это еще одно ключевое слово, которое я должен отфильтровать, представив список массивов, состоящий из следующих трех слов, которые будут использоваться в качестве модели:

REG_info1, info2, SUPER_info3 и т. Д. *

Мне нужно три фильтра, соответствующих одной модели за раз, мой вопрос сосредоточен только на втором фильтре, разбирающем ключевые слова на основе модели "info2".

Ответы [ 5 ]

12 голосов
/ 17 апреля 2009

Просто наберите буквально:

REG

Это будет соответствовать только REG.

Итак:

String REGEXP = "^(REG_|SUPER_)?.*";

Редактировать После того как вы пояснили, что хотите сопоставить каждое слово, которое не начинается с REG_ или SUPER_, вы можете попробовать это:

\b(?!REG_|SUPER_)\w+

\b является границей слова, а выражение (?!expr) является прогнозным утверждением.

2 голосов
/ 17 апреля 2009

Поскольку все уже ответили, если вы хотите сопоставить строку, начинающуюся с REG, вы используете регулярное выражение "^ REG", если вы хотите сопоставить любую строку, которая начинается с REG или SUPER, вы используете "^ (REG | SUPER ) "и отрицание регулярных выражений, как правило, является сложной задачей.

Чтобы соответствовать всем строкам, НЕ начинающимся с 'REG', вам нужно сопоставить "^ [^ R] | R [^ E] | RE [^ G]" и регулярное выражение, чтобы соответствовать всем строкам, не начинающимся с REG или SUPER. может быть построен аналогичным образом (начните с группировки «не REG» в скобках, затем создайте шаблоны «не SUPER» как «[^ S] | S [^ U] | [SU [^ P] ...» , сгруппируйте это и используйте чередование для обеих групп).

0 голосов
/ 17 апреля 2009
REGEXP = "^(REG_|SUPER_)"

будет соответствовать всему, что имеет REG_ или SUPER_ в начале строки. Вам не нужно больше после группы "(.. | ..)"

0 голосов
/ 17 апреля 2009

Как насчет

\mREG\M

// \mREG\M
// 
// Options: ^ and $ match at line breaks
// 
// Assert position at the beginning of a word «\m»
// Match the characters “REG” literally «REG»
// Assert position at the end of a word «\M»
0 голосов
/ 17 апреля 2009

[] указывает классы символов. Это не то, что вы хотите. Вы можете просто использовать "REG", чтобы соответствовать REG. (Вы можете использовать REG | SUPER для REG или SUPER)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...