python - 如何使用 python re 来描述这个?
问题描述
我创建了深奥的编程语言,我想实现这种结构来打印文本:
!(some-text)
此结构必须在括号中写入文本并以)结尾。
但是由于某种原因,这种结构只有在找到换行符时才会结束。我认为它的发生是因为点匹配除\n之外的任何符号。我尝试使用(?!...)创建条件,但这也不起作用。最终我不知道如何匹配没有\n和)的所有符号。
下面我附上了令牌表的完整代码,以便您发现其中的错误并建议修复它们的方法。提前感谢您的帮助!
token_table = [
(r'[ \t\n]+', None),
(r'!\((?!\)).*\)', 'PRINTSTR'), # This is not working
(r'[-]?[0-9]+', 'INT'),
(r'(?!!|\?|\(|\)|:|<|>|\+).*', None),
(r'!', 'PASS'),
(r'\?', 'IF'),
(r'\(', 'LPAR'),
(r'\)', 'RPAR'),
(r'>', 'INPUT'),
(r'<', 'PRINT'),
(r':', 'GOTO'),
(r'\+', 'ADD'), ]
解决方案
不要使用.
, 用于[^)]
匹配 . 以外的任何字符)
。这将包括换行符。
(r'!\([^)]*\)', 'PRINTSTR')
推荐阅读
- php - 如何在代码点火器中从我的网址中删除问号
- python - 如何使用 PyTorch 0.4.0 从 numpy 数组中使用 requires_grad=True 制作 FloatTensor?
- wordpress - 如何恢复wordpress备份?
- last.fm - 使用 Last.fm api 获取歌曲元数据
- python - 如何预处理音频数据以输入神经网络
- c# - OAuth 2 脚本错误
- php - 使用 PDO PHP 将 CSV 导入 MySQL 数据库
- angular - 从 Angular 5 到 Lumen Rest API 的 HTTP 请求
- javascript - Javascript:resquestAnimationFrame 作为对象属性
- r - R比较数据框中两个因素的值并在第三个中获得结果