识别罗马数字后跟“.”、space,然后是大写字母。 (正则表达式)

Recognize roman numeral followed by '.', space and then capital letter. (RegEx)

有人可以帮我解决这个问题吗?

我正在尝试将罗马数字与“.”匹配。在最后,然后是 space 和一个大写字母。例如:

我。这是一行。

二.这是另一行。

X。这里又是另一行。

因此,正则表达式应匹配 "I. A""II. A""X. H"

我这样做了 "^(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}){1,4}\.\s[A-Z]" 但问题是这个 RegEx 也与 ". A" 匹配,我不想要它。

在简历中,它应该至少有一个罗马数字,然后是一个".",然后是一个space和一个大写字母。

您需要在开头进行 (?=[LXVI]) 前瞻,在字符串开头至少需要一个罗马数字字母:

^(?=[LXVI])(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})\.\s[A-Z]
# ^^^^^^^^^

regex demo。不确定你为什么使用 {1,4},我建议删除它。

另一种解决方法是在 ^ 之后使用单词边界:

^\b(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})\.\s[A-Z]
#^^

这将不允许 . 出现在开头的匹配项,因为 \b 需要与字符串开头相同的位置,要求下一个字符必须是单词字符(并且这里必须是罗马数字)。

关于 \.\s[A-Z],您可以在 \s 之后添加 +* 来增强它,如果您需要匹配它并从匹配中排除,把它变成积极的前瞻,(?=\.\s+[A-Z])(?=\.\s*[A-Z]).