Hello
I have a string of all uppercase letters (no digits) I need a regex to insert a ":" after every second character FAGHIJGN becomes FA:GH:IJ:GN How can I do this with a regex?
Thanks in advance,
Coen
If with search:
| rex mode=sed "s/(\w{2})(?=\w{1,2})/\1:/g"
If with props:
SEDCMD-aaa = s/(\w{2})(?=\w{1,2})/\1:/g
These work too:
| rex mode=sed "s/(\w{2})(?=\w+)/\1:/g"
SEDCMD-aaa = s/(\w{2})(?=\w+)/\1:/g
Like this:
... | rex field=YourFieldNameHere mode=sed "s/(.{2})/\1:/g s/:$//"
@woodcock - Holy crud, sed
mode allows multiple replacements in a single call?
That would simplify the ... presentation, lets say... of my more complicated uses of the format
command.
I have a NEW TOY!
See why I keep you guys around?
Ask anybody, I am full of IT.
If with search:
| rex mode=sed "s/(\w{2})(?=\w{1,2})/\1:/g"
If with props:
SEDCMD-aaa = s/(\w{2})(?=\w{1,2})/\1:/g
These work too:
| rex mode=sed "s/(\w{2})(?=\w+)/\1:/g"
SEDCMD-aaa = s/(\w{2})(?=\w+)/\1:/g
@jkat54 - As coded, wouldn't that be limited to even numbers of pairs? I think you want that second \w{2}
to be a positive lookahead, and only add the colon after \1
.
| rex mode=sed "s/(\w{2})(?=\w{2})/\1:/g"
Worked on regex101.com with even or odd numbers of letters.
Ah I was able to break it... and fix it
Your approach is better but doesn't work with 5,7,etc
This does:
(\w{2})(?=\w{1,2})
Updating my answer
@jkat54 - good point, but you can kill the {1,2} as redundant, since it's a zero length assertion so {1} is enough.