如何编写正则将&视为普通字符匹配LaTeX BibTeX引用键
匹配BibTeX条目行的正则表达式
我正在处理LaTeX项目的.bib参考文献文件,有以下两行示例内容:@Article{abc123,@InBook{def123&233,
需要编写正则表达式,匹配满足以下规则的行:
- 以
@开头 - 后跟任意字符序列(如示例中的
Article、InBook) - 接着是左大括号
{ - 之后是除逗号外的任意字符、数字及其他内容
- 最后以逗号
,结尾(需包含该逗号)
之前用工具生成的正则@[A-Za-z0-9]+\{[A-Za-z0-9]+&[A-Za-z0-9]+,只能匹配带&的行,无法匹配无&的行,求能将&视为普通字符的正确正则。
解决方案
核心是用排除逗号的字符集匹配{到结尾逗号之间的内容,这样所有非逗号的字符(包括&)都会被正常匹配,不需要单独指定。
基础正则(匹配符合规则的片段)
@[A-Za-z]+\{[^,]+,
整行匹配正则(避免部分匹配)
如果需要确保匹配的是完整一行,加上行首行尾锚点:
^@[A-Za-z]+\{[^,]+\,$
正则拆解
@:匹配开头的@符号[A-Za-z]+:匹配BibTeX条目类型(如Article、InBook,若类型包含数字可改为[A-Za-z0-9]+)\{:转义匹配左大括号{(因为{在正则中是特殊元字符,必须转义)[^,]+:匹配任意非逗号的字符(包括字母、数字、&等符号),+表示至少有一个字符,:匹配结尾的逗号^/$(仅整行匹配版):分别匹配行的开头和结尾,确保不会匹配行内的部分片段
内容的提问来源于stack exchange,提问作者Tryer
相关产品推荐
相关产品推荐

