You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写正则将&视为普通字符匹配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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 05:45:35