首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用RE扫描仪查找双引号中的资料?

用RE扫描仪查找双引号中的资料?
EN

Stack Overflow用户
提问于 2014-03-30 00:19:33
回答 1查看 878关注 0票数 1

是否有一种方法可以使用以下(无文档的) re.Scanner来查找双引号中的所有内容,以便将这种匹配归类为字符串?

代码语言:javascript
运行
复制
    scanner = re.Scanner([
(r"[-10-9]+", lambda scanner, token:("INTEGER", int(token))),
(r"[A-Za-z]+", lambda scanner, token:("NAME", str(token))),
(r"[:true::false:]+", lambda scanner, token:("BOOL", token)),
(r"[:error:]+", lambda scanner, token:("ERROR", token)),
(r'.', lambda scanner, token: None),
])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-30 00:22:58

您可以简单地向扫描仪添加一个字符串regex,如下所示:

代码语言:javascript
运行
复制
>>> import re
>>> scanner = re.Scanner([
(r"[-10-9]+", lambda scanner, token:("INTEGER", int(token))),
(r"[A-Za-z]+", lambda scanner, token:("NAME", str(token))),
(r"[:true::false:]+", lambda scanner, token:("BOOL", token)),
(r"[:error:]+", lambda scanner, token:("ERROR", token)),
(r'".*?"', lambda scanner, token:("STRING", token)),  # added STRING regex
(r'.', lambda scanner, token: None),
])

现在您可以测试它了:

代码语言:javascript
运行
复制
>>> i = '"string"'  # simulated input
>>> t = '"this is a very long string with whitespace"'  # another simulated input
>>> scanner.scan(i)
([('STRING', '"string"')], '')  # ([(token_label, match)], remainder_of_string)
>>> scanner.scan(t)
([('STRING', '"this is a very long string with whitespace"')], '')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22738680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档