Справка RegEx - найти подстроку, кроме случаев, когда в определенном слове - PullRequest
0 голосов
/ 24 июня 2011

Коллега сканирует большой скрипт в поисках подстроки UAT (без учета регистра).К сожалению, скрипт содержит много ссылок на «оценку», либо как целое слово, либо как часть имени поля.

Какой шаблон поиска RegEx будет возвращать совпадения для UAT, как в следующих примерах?

  • UAT: совпадение
  • uat: совпадение
  • TheUATServer1: совпадение
  • Оценка: нет совпадения
  • ValuationDate: нет совпадения

Большое спасибо

Нил

Ответы [ 4 ]

1 голос
/ 24 июня 2011

Редактировать: Это работает для случаев OP.

Попробуйте это выражение: uat~(ion)

Регулярное выражение SSMS (и Visual Studio) имеет другой синтаксис для отрицательного просмотра: ~(prevent)

Если вы хотите uat самостоятельно, вы можете использовать это: <uat>.

< и > означают начало и конец слова соответственно.

0 голосов
/ 24 июня 2011

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

UAT(?!ion)

Это отрицательный прогноз, который гарантирует, что за UAT не следует ion, как в valuation. Я не знаю, поддерживает ли ваш инструмент это и достаточно ли строгое правило для ваших нужд.

То, что вы должны активировать, является регистронезависимым совпадением.

0 голосов
/ 24 июня 2011

ИЗМЕНЕНО для учета регистра и включения нового требования

Я думаю, что вы хотите просто регулярное выражение:

[Uu][aA][tT](?![iI][oO][nN])

то есть uat (любой случай), за которым не следует ion (любой случай)

0 голосов
/ 24 июня 2011
fgrep -i "uat" FILE | fgrep -i -v "valuation"

Иногда самые простые инструменты могут делать удивительные вещи.

Но вы не указали инструменты, которые у вас есть, вкус регулярных выражений (их много). И то, что вы ищете, может быть определено через регулярное выражение (отрицательный взгляд - (ahead|behind)), но простой поиск и отрицание строки могут быть быстрее.

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