I need to find in several files of my thesis all occurrences of any text\cite{...} and change them to any text~\cite{...}. But I don't understand how VSCode search regexp works.
I have tried ^[!~]\cite but it doesn't seem to understand this notation for a char that is not ~.
Can anyone help?
CodePudding user response:
An alternative to Wiktors answer could be:
(?<!~)(\\cite)
And replace with:
~$1
(?<!~) is a negative lookbehind forcing the regex to only match something not starting with a tilde (~). (\\cite) matches the text literally, where the parentheses creates a capture group.
In the replacement first you add the tilde you want added, followed by $1 which is a back reference, meaning "take capture group 1 and put here".
Groups are numbered from 0 (which is the entire match). And is numbered from outside in, left to right. The negative lookbehind is not a capture group.
CodePudding user response:
You can use
([^~]|^)(\\cite)
Replace with $1~$2, see the regex demo.
Details:
([^~]|^)- Group 1: any char other than~([^~]) or (|) a start of a line(\\cite)- Group 2:\citetext.
The $1~$2 replacement pattern uses Group 1 ~ Group 2 value to replace the matches.
