【发布时间】:2022-02-04 23:19:36
【问题描述】:
我有如下文本行:
() \\span{figurato} di \\span{qualcuno} scream loudly
我需要从中捕获注释“figurato”、“qualcuno”以及“scream loudly”字符串。 换句话说,我需要捕获花括号中包含的每个术语(称为注释,从 1 到 N 的可变数字)但 还要捕获一个字符串,其中包含最后一个右花括号之后的任何内容.
我的正则表达式适用于第一个任务:
{(?P<annotation>.+?)}
我还有第二个任务的正则表达式:
[^}]+$
当前有效的python代码是:
def _scanGloss(gloss: str) -> dict:
return {"gloss": re.search(r"[^}]+$", gloss), "annotations": re.findall(r"{(?P<annotation>.+?)}", gloss)}
其中光泽是输入行,但我没有成功找到一种方法来仅在一个正则表达式中完成所有这些操作。有可能吗?
作为第二种模式的附带问题,我无法使用括号来定义捕获组,但这并不重要。
谢谢
【问题讨论】:
-
你为什么不 OR 你的 2 个正则表达式来得到 1 个?
-
感谢您的建议,但使用 OR 我怎么知道哪个是哪个?