Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Using string replacement ($& and $+) with findReplaceRegex (Confluence CLI tool)

Maarten van Hees June 10, 2012

Hello!

I've been using CLI for a few days now and it has greatly sped up the wiki migration i'm doing. Today i've been doing a lot of findReplace and findReplaceRegex to replace common things throughout very similiar articles, but i ran into a little problem wich i can't seem to figure out.

What i'm trying to achieve is this: i need to find strings that start with '@' and have all capital letters and then, with the match, i want to put <span class='myclass'> </span> around it to get some simple syntax highlighting. I'm not a big expert on regular expressions, but from what i can remember shouldn't it be possible to use string replacement on the right hand part of the findReplaceRegex action call parameter in order to re-use the matched string?

I've found this example at the documentation:

--findReplaceRegex "(a )(test)(.*):\$1\$3#\$2#"

Which seems to be doing something similiar to what i want, using the matched strings again to replace the existing ones. However, i can't get this to work. When i do it like this it just prints \$1\$3#\$2# as string in my article.

Any idea if it's possible to get it working? Would again be a great time saver. This is what i have so far:

--findReplaceRegex "(@)([A-Z):\$&"

Thanks in advance!


1 answer

1 accepted

1 vote
Answer accepted
Bob Swift
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 10, 2012
  1. It helps a lot to get your regex working using this tool: http://www.regexplanet.com/advanced/java/index.html
  2. You need to watch out for special characters (command line and regex) - it can get confusing when you have to escape things and it depends on your OS what needs to be escaped (the example \$ is an escaped $ on unix)
  3. Quick look at your regex shows a few problems
    1. Don't you want [A-Z]* ? You are missing the closing ] and the * (0 or more characters)
    2. You need $1 on the replace
    3. I suspect you need some like:
      (@[A-Z]*):some text\$1some other text

Maarten van Hees June 13, 2012

Thanks for your answer, i've checked it out and i managed to get it working! Seems i wasn't far off, i kept using \$1 but it started working when i stopped using the backslash. This works for me:

--findReplaceRegex "(@[A-Z0-9]*):<span class='quaestor_syntax'>$1</span>"

Thanks again for your help!

Bob Swift
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 13, 2012

Good, for Windows, you don't need to escape the $ like for unix.

Suggest an answer

Log in or Sign up to answer
TAGS
atlassian, atlassian community, job interviews, interview tips, career advice, interview preparation, job search, interview experiences, hiring process, atlassian careers, community discussion, interview best practices

Interview Tips & Pet Peeves ✍️

Join the discussion on interview best practices and common pitfalls. Share your experiences and learn from others in the Atlassian Community.

Share you experiences!
AUG Leaders

Atlassian Community Events