Github user ijokarumawak commented on the issue:
https://github.com/apache/nifi/pull/3200
@bdesert @ottobackwards Thanks for reviewing. I've added unit tests.
As a reference, I run the added tests with Lexer before this PR. Following
tests failed with current Lexer, but passes with the updated Lexer:
This test failed with original Lexer because `[\s]` is converted to `[\\s]`
by Lexer and didn't match.
```
[ERROR]
testReplaceRegexEscapedCharacters(org.apache.nifi.record.path.TestRecordPath)
Time elapsed: 0.007 s <<< FAILURE!
org.junit.ComparisonFailure:
Replacing whitespace to new line expected:<John[
]Doe> but was:<John[ ]Doe>
at
org.apache.nifi.record.path.TestRecordPath.testReplaceRegexEscapedCharacters(TestRecordPath.java:1046)
```
This test failed with original Lexer because `\[` is converted to `\\[` by
Lexer and produced RegEx syntax error.
```
[ERROR]
testReplaceRegexEscapedBrackets(org.apache.nifi.record.path.TestRecordPath)
Time elapsed: 0.001 s <<< ERROR!
org.apache.nifi.record.path.exception.RecordPathException:
java.util.regex.PatternSyntaxException: Unclosed character class near index
2
\\[
^
at
org.apache.nifi.record.path.TestRecordPath.testReplaceRegexEscapedBrackets(TestRecordPath.java:1149)
```
Both tests failed with the same cause, and fixed by this PR.
---