[
https://issues.apache.org/jira/browse/NIFI-1919?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andy LoPresto updated NIFI-1919:
--------------------------------
Description: When {{${attribute:replaceAll('\w+', 'replacement')}}} is
called, the pattern is matched and applied. However, when
{{${attribute:replace('\w+', 'replacement')}}} is called, it is not. I believe
this is because {{ReplaceAllEvaluator}} uses {{String#replaceAll(String regex,
String replacement)}} while {{ReplaceEvaluator}} uses
{{String#replace(CharSequence target, CharSequence replacement)}} which then
uses {{Pattern.compile(target.toString(), Pattern.LITERAL)}} instead of
compiling for a regular expression. I am writing a unit test to demonstrate
this and show the results when {{String#replaceFirst()}} is used instead.
(was: When {{ ${attribute:replaceAll('\w+', 'replacement')} }} is called, the
pattern is matched and applied. However, when {{ ${attribute:replace('\w+',
'replacement')} }} is called, it is not. I believe this is because
{{ReplaceAllEvaluator}} uses {{String#replaceAll(String regex, String
replacement)}} while {{ReplaceEvaluator}} uses {{String#replace(CharSequence
target, CharSequence replacement)}} which then uses
{{Pattern.compile(target.toString(), Pattern.LITERAL)}} instead of compiling
for a regular expression. I am writing a unit test to demonstrate this and show
the results when {{String#replaceFirst()}} is used instead. )
> Expression Language only evaluates regular expression replacement on
> replaceAll, not replace
> --------------------------------------------------------------------------------------------
>
> Key: NIFI-1919
> URL: https://issues.apache.org/jira/browse/NIFI-1919
> Project: Apache NiFi
> Issue Type: Bug
> Components: Core Framework
> Affects Versions: 0.6.1
> Reporter: Andy LoPresto
> Assignee: Andy LoPresto
> Fix For: 1.0.0, 0.7.0
>
>
> When {{${attribute:replaceAll('\w+', 'replacement')}}} is called, the pattern
> is matched and applied. However, when {{${attribute:replace('\w+',
> 'replacement')}}} is called, it is not. I believe this is because
> {{ReplaceAllEvaluator}} uses {{String#replaceAll(String regex, String
> replacement)}} while {{ReplaceEvaluator}} uses {{String#replace(CharSequence
> target, CharSequence replacement)}} which then uses
> {{Pattern.compile(target.toString(), Pattern.LITERAL)}} instead of compiling
> for a regular expression. I am writing a unit test to demonstrate this and
> show the results when {{String#replaceFirst()}} is used instead.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)