【发布时间】:2015-08-05 18:04:46
【问题描述】:
我想用正则表达式提取一些模式。作为简化示例,我有下面的文本片段,我想提取第二个字段不带下划线的文本:
-
main_opt.otherstuff应该返回三个字段:"main"、"opt"、"otherstuff" -
main.otherstuff应该返回三个字段:"main"、""、"otherstuff"
如果我将正则表达式指定为^([^_]+)_?([^.]+)?\\.(.+)$,我可以得到这个。但是,我想知道我是否可以更改这种模式 _?([^.]+)?,因为它们是同一个子模式的一部分,所以只指定了一个 ?。
我尝试过([^_]+)((?=_)[^.]+)?\\.(.+)$ 和([^_]+)((?:_)[^.]+)?\\.(.+)$,但它们在第二个字段中返回“_opt”而不是“opt”。 (如果这很重要,我正在使用 python 的 re 包。)
【问题讨论】:
-
"main", "", "otherstuff"是想要的结果还是您只是报告结果? -
@dawg:是的,这三个字段是我想要的结果。