antlr - ANTLR4 Python3 从字符串中删除引号
问题描述
我有一个规则来匹配语法中的字符串。我目前需要字符串的内容而不是引号本身,所以我希望去掉引号。
StringLiteral
: UnterminatedStringLiteral '"'
;
UnterminatedStringLiteral
: '"' (~["\\\r\n] | '\\' (. | EOF))*
;
我在https://theantlrguy.atlassian.net/wiki/spaces/ANTLR3/pages/2687006/How+do+I+strip+quotes上看到了一个解决方案,但它是 ANTLR 的旧版本,我需要将其翻译成 Python3 . 有人对此有解决方案吗?
解决方案
ANTLR3 语法:
STRING: '\"' CHARS '\"' {setText(getText().substring(1, getText().length()-1));} ;
仍然适用于 ANTLR4。如果您想将该 Java 代码移植到 Python,请执行以下操作:
StringLiteral
: UnterminatedStringLiteral '"' {self.text = self.text[1:-1]}
;
如果您还想删除\
用于转义其他字符的 ,请执行以下操作:
grammar YourGrammarName;
@lexer::header {
import re
}
...
StringLiteral
: UnterminatedStringLiteral '"' {self.text = re.sub(r'\\(.)', '\\1', self.text[1:-1])}
;
推荐阅读
- java - 有没有办法在硒中自动化或绕过谷歌验证码?
- python - 使用第 1 列和第 2 列填充第 3 列
- java - Java 中的 Xpath 过滤器仅返回第一个值结果
- animation - 使用关键帧耀斑编辑顶点
- websocket - Dart 将客户端 Socket 升级为 WebSocket
- angularjs - 如何在 ng-repeat 中迭代 2 组数据
- java - 多模块项目中的 Maven 构建中的循环引用
- python-3.x - 基于其他列 Python 3+ Pandas 数据框条件的逐年累积和
- spring - 如何在我的集成流程中调用方法
- android - iText7 PDF 需要时间来生成