正则表达式匹配奇数空格

时间:2016-01-05 19:16:57

标签: python regex

我需要在文本中匹配罗马数字。例如Star Wars VII The Force Awakens 我使用这个表达式(?:^|\s)(IX|IV|V?I{0,3})(?:\s|$),但它将VII与空格匹配,即_VII_

我尝试了(?<=^|\s)(IX|IV|V?I{0,3})(?=\s|$),但获得了error: look-behind requires fixed-width pattern

我认为问题出在非捕获组。如果我使用matchsearch - 它只返回数字,但只返回sub - 它会替换非捕获组和捕获组(带空格的数字)。

目标是将文本中的罗马数字与空格或之前(之后的行/开头/结尾)匹配,而不是作为单词的一部分。

1 个答案:

答案 0 :(得分:2)

将交替(p(x) ~= 2^-x)移到lookbehind:

之外
|

See it in action

<小时/> 或者,您只需使用word boundaries替换外观:

(?:^|(?<=\s))(IX|IV|V?I{0,3})(?=\s|$)