Как указать НЕ с помощью регулярных выражений для слов - PullRequest
1 голос
/ 14 сентября 2009

Как указать НЕ с помощью регулярных выражений для слов

Я хочу отфильтровать список имен событий на основе регулярного выражения. Я могу создать регулярное выражение для включения (или сопоставления) имени, но каким будет регулярное выражение для исключения (не сопоставления) имени?

Например, если я хочу включить события мыши, шаблон будет "^ Mouse". Если я хочу, чтобы все свойства изменились, то "Changed $" идеально подходит. И все же, что было бы регулярным выражением, если бы я хотел исключить эти измененные события?

Ниже приведен пример того, как я планирую использовать шаблон.

Private _regEx As Regex

Public Sub New(ByVal pattern As String)
    'pattern = "Changed$"
    _regEx = New Regex(pattern)
End Sub

Private Function IsValid(ByVal eventName As String) As Boolean
    Return _regEx.IsMatch(eventName)
End Function

Кроме того, я хочу объединить шаблоны. Например, я хочу исключить все измененные события и события мыши. Противоположность «^ Mouse | Changed $»

1 Ответ

1 голос
/ 14 сентября 2009

Просто отрицаете ваше возвращаемое значение?

Return Not oRegEx.IsMatch(eventName)

Если вы можете манипулировать только самим регулярным выражением, тогда вы можете попробовать отрицательный взгляд:

^(?!regexgoeshere)

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

^(?!.*Changed$)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...