You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Konstantin (Jira)" <ji...@apache.org> on 2020/02/28 09:45:00 UTC
[jira] [Updated] (NIFI-5813) ReplaceText regression: fails on mixed
literal dollar signs and backreferences
[ https://issues.apache.org/jira/browse/NIFI-5813?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Konstantin updated NIFI-5813:
-----------------------------
Attachment: ReplaceText_regression.xml
> ReplaceText regression: fails on mixed literal dollar signs and backreferences
> ------------------------------------------------------------------------------
>
> Key: NIFI-5813
> URL: https://issues.apache.org/jira/browse/NIFI-5813
> Project: Apache NiFi
> Issue Type: Bug
> Affects Versions: 1.8.0
> Reporter: Konstantin
> Priority: Minor
> Labels: regexp_replace, regression
> Attachments: ReplaceText_regression.xml
>
>
> We've got a bug with ReplaceText when in replacement value are both the literal dollar signs and backreferences.
> Our use case is preparing Mongo queries using the value passed in FlowFile. The replacement looks like this:
> {code:java}
> {updatedTime: {$ne: $1}}
> {code}
> NiFi 1.7.1 iterates through this line ([source|https://github.com/apache/nifi/blob/rel/nifi-1.7.1/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ReplaceText.java#L709]) and correctly replaces only "$ne", leaving "$1" untouched. NiFi 1.8.0, on the other hand, uses Matcher ([source|https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ReplaceText.java#L717]), which escapes all and every dollar sign if it ever finds the need to escape one, so the backreference is treated as literal replacement, and the query fails.
> We have to make a workaround right now by using several ReplaceText processors in a row, but this looks rather ugly. Hoping to see this fixed.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)