2016-10-04 16 views
0

Я пытаюсь использовать regexMatcher из String Manipulation в KNIME, но он не работает. Я пишу следующее: regexMatcher ($ Document $, "/ \ w") , когда я хочу извлечь все предложения с/s или/p или w/p или/200. Однако, несмотря на то, что у меня такие случаи в моей таблице, ничего не получается. Буду признателен за вашу помощь.regexMatcher в String Manipulation KNIME

+0

Try 'regexMatcher ($ Document $ "/ \\ ш") = "TRUE"' –

+0

Я обновил свой Que Stion. Я попытался использовать ваше предложение, но оно не сработало – Regina

+0

Попробуйте ''^\\ w */\\ w + $ "' –

ответ

1

я получил следующее:

|Document  |isOK |other|strict| 
|--------------|-----|-----|------| 
|Some /p with q|True |False|False | 
|/200   |True |True |False | 
|/p   |True |True |True | 
|/s   |True |True |True | 
|w/p   |True |False|False | 
|no slash  |False|False|False | 

Для выражения:

  • isOK: regexMatcher($Document$, ".*?/\\w.*") (. Я думаю, это то, что вы после)
  • другое: regexMatcher($Document$, "/\\w.*")
  • : regexMatcher($Document$, "/\\w")

(Документ не содержит контента после последнего видимого символа.)

Проблемы вы можете столкнуться является ускользающим для узла строки манипулятором и семантики regexMatcher.

Строковый литерал внутри есть только строка Java, поэтому вам нужно избежать \ (и некоторых других символов), поэтому он становится \\.

Семантика regexMatcher, чтобы соответствовать всем строкам, так что вы должны добавить .*? (не жадный матч ничего) до того значения, которое Вы ищете и .* (жадный матч ничего) после выражения вы ищете. (Очевидно, что если я неправильно понял ваш вопрос, семантика, вероятно, уже есть то, что вы хотите.)

BTW: в случае, если вы хотите отфильтровать, вы должны проверить Rule-based Row Filter узел, как это предлагает возможность напрямую фильтровать по регулярному выражению. Он использует различные правила, вылетающих (для опции isOK):

  • $Document$ MATCHES ".*?/\w.*" => TRUE (побег не допускается в кавычках)
  • $Document$ MATCHES /.*?\/\\w.*/ => TRUE (маскирование допускается в пределах косой черты (и /, \ являются должны быть экранированы, но " не требуется))

Example workflow

+0

Большое вам спасибо. Это именно то, что я искал – Regina