I am working on a LaTeX project that contains a bibliography file (.bib) the contents of which are as follows:
@Article{abc123,
@InBook{def123&233,
amongst others. So, the specification of the expression that I would like to match are those lines that start with @ followed by a sequence of characters (Article or InBook in the example above) followed by { followed by a sequence of characters, numbers and everything else possible except a , terminated by a , (this terminating , should be matched)
So, in the example above, I would like to have a regexp that matches:
@Article{abc123, and @InBook{def123&233,
Using the online regexp generator, I obtained:
@[A-Za-z0-9] \{[A-Za-z0-9] &[A-Za-z0-9] ,
but this regexp matches @InBook{def123&233, but does not match @Article{abc123, because the latter does not contain &.
How can I create a regexp that considers & as another ordinary character with no special meaning?
CodePudding user response:
You may use this regex:
@[A-Za-z0-9] \{[^,] (?:,|\s*$)
RegEx Details:
@: Match a@[A-Za-z0-9]: Match 1 of alphanumeric characters\{: Match a{[^,]: Match 1 of any character that is not comma(?:,|\s*$): Match comma or end of string with optional trailing spaces
