我试图在文本中找到罗马数字后跟句号和空格的实例,比如IV.
。这些标志着诗的开始。然而,有些诗句不是以罗马数字开头的,所以我在这些诗句的开头插入了[NV]
标记。我有一个可以找到数字的正则表达式和一个可以找到[NV]
标记的正则表达式,但是我不能将它们组合在一个正则表达式中来查找其中一个。你知道吗
我查找数字的正则表达式是:
numeralpat = re.compile(r'[IVX]{1,4}\. ')
我想我可以把它和另一个正则表达式放在一个集合中,找到一个数字或[NV]
标记:
numeralpat = re.compile(r'[(\[NV\])([IVX]{1,4}\. )]')
这会导致同一类型的括号之间出现问题,因此我尝试转义不同的字符以使其正常工作。这些对我都不管用。这可以用regex实现吗?你知道吗
编辑以添加示例文本:
文本:
I. this is some text with a verse numeral
II. this is some text with a verse numeral
III. this is some text with a verse numeral
[NV]this is text with no verse numeral
IV. this is some text with a verse numeral
V. this is some text with a verse numeral
预期匹配:
'I. '
'II. '
'III. '
'[NV]'
'IV. '
'V. '
你可以像这样交替组合两个正则表达式
这将匹配
[NV]
或任何I
V
X
字符1到4次,后跟.
和空格。你知道吗Demo
您可以指定如下备用查找:
r'(abc|def)'
-查找'abc'
或'def'
-您还应该转义括号以查找显式的\[NV\]
,而不是'N'
或'V'
:输出:
见https://regex101.com/r/MpMxcP/1
它查找
'[NV]'
或'[IVX]'
中的任何一个,最多4次,后跟文字'.'
相关问题 更多 >
编程相关推荐