【发布时间】:2021-02-10 23:29:56
【问题描述】:
我正在尝试在字符串中查找未加引号的单词的位置(索引),但我的所有测试均未成功。
对于字符串:string='foo "bar" baz'我想得到
(0, 3) # This for foo
(10, 13) # This for baz
# I'd like to skip the quoted "bar"
但是,我尝试的每个正则表达式都包含引用的 'bar' 或其一部分:
string='foo "bar" baz'
_RE_UNQUOTED_VALUES = re.compile(r"([^\"']\w+[^\"'])")
print([m.span() for m in _RE_UNQUOTED_VALUES.finditer(string)])
输出:[(0, 4), (5, 8), (9, 13)]
或使用:
_RE_UNQUOTED_VALUES = re.compile(r"(?!(\"|'))\w+(?!(\"|'))")
# Outputs [(0, 3), (5, 7), (10, 13)]
这不能用正则表达式实现吗?我是否误解了finditer() 的工作原理?
【问题讨论】: