识别罗马数字后跟“.”、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])
.
有人可以帮我解决这个问题吗?
我正在尝试将罗马数字与“.”匹配。在最后,然后是 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])
.