【发布时间】:2014-12-09 14:29:01
【问题描述】:
我正在使用具有如下定义的西班牙语词典:
l. a. c. Buitre, alimoche. adj. Persona alelada. (Cornago). GOICOECHEA. // 2. f. Persona torpe, despistada e irreflexiva. // 3. Estar mirando a los abantos. fr. fig. Ser despistado, soñador, no apercibirse de la realidad. Autol. RUIZ. // 4. f. esto es una prueba
以下规则适用:
- 每个定义可以包含以下类别中的一个(并且永远不会超过一个):
-
l. a. c. -
f. m.
-
- 类别始终位于定义的开头
- 第一个定义从头开始,如果有更多定义,则以
\\ n.开头,其中'n'是一个数字(可以多于一个数字)
对于我给出的示例,应该解析以下定义:
- (类别:
l.a.c.)Buitre,alimoche。形容词角色阿莱拉达。 (玉米)。 GOICOECHEA - (类别:
f.)Persona torpe,despistada e impreflexiva。 - (无类别)Estar mirando a los abantos。 fr。如图。 Ser despistado, soñador, no apercibirse de la realidad。汽车鲁伊兹。
- (类别:
f.)esto es una prueba
我正在尝试制作一个正则表达式来捕获每个定义(即 0 或 1 个类别 + 含义)。这就是我所拥有的
(?:(m\.|l\. a\. c\.|f\.) )?(.*?) (?:$|(?:\/\/ \d+. (?:(m\.|l\. a\. c\.|f\.) )?(.*?))+)
我正在测试它here这是我写的:
(?:
(m\.|l\. a\. c\.|f\.) <-- First: unnamed group containing the named group
for the category and one space
)?
(.*?) <-- Named group for the meaning
(?: <-- Unnamed group for end of line OR another definition
$ <--- (end of line)
| <--- (OR)
(?:\/\/ \d+. <--- (Definition separator & number)
(?:(m\.|l\. a\. c\.|f\.) )?(.*?) <-- Another definition
)+ <-- There may be more than one definition, so we add '+'
)
我有几个问题:
- 我不知道为什么它不起作用。似乎最后一个捕获组
(.*?)直到下一个\\才扩展。我该如何解决? -
(m\.|l\. a\. c\.|f\.)组应该更大(类别更多)如何避免重复? - 我给出的正则表达式字符串中有一些重复,我该如何避免这种情况?
这是我的第一个重要的正则表达式示例,因此欢迎任何其他关于样式的评论或总体改进。
我的主要问题是为什么我的正则表达式不起作用。(这只是为了澄清......)
【问题讨论】:
-
现在可能清楚了吗?
-
第一个字典示例很棒 - 如果有更多行可以尝试使用正则表达式,那就太好了。
-
这里还有几行(不过可能是其他类别...)pastebin.com/STsq16i9
-
(?:(m\.|l\. a\. c\.|f\.) )?(.*?)(?:$|(?:\/\/ \d+.) +)对我来说效果更好,如果你让它变得贪婪的话。不太确定为什么原来的不起作用,但至于你想减少的重复,我认为你无能为力。 -
感谢您提供所有详细信息并明确指出您想知道它为什么不起作用。人们往往会忽略这类问题,只是在提问者的脸上贴上一个全新的图案(哎呀,有时我也会这样做)。