我有一行文本,我需要从中提取一个子字符串,该子字符串后面可能有字符,也可能没有字符。 示例:
Robin Hood viewed item "something.mov" (99.12345.567891011)
或者
Robin Hood viewed item "something.mov" (88.123.456789101) some other stuff.
我需要拉括号里的子串。子串将始终是由两个句点分隔的三组数字。引号中结尾带有.mov
的字符串也可以包含任意字符,因此搜索应该始终从行的末尾开始
如果结束符后面有字符,那么在行尾会有一个.
。如果结束符后面没有字符,那么行尾就没有.
现在我有:
mo = re.search(r'(\d[\d.]*)\).*$', data1)
但是,这在一些比赛中会中断。问题是,我使用的工具(Matillion)没有吐出它失败的线路,所以我不知道为什么
看来这应该行得通:
它匹配一个左括号、三组由
.
分隔的数字和一个右括号。数字集将在捕获组1中如果只想匹配行中最后一组括号,可以使用:
[^()]*$
确保在这个集合和行尾之间不再有括号这个正则表达式应该工作:
.*\((\d+\.\d+\.\d+)\)
我添加了一个前缀,它使用下一个组之前的任何字符,因此
\((\d+\.\d+\.\d+)\)
最后一次出现之前的所有字符都将被忽略。这以不同于$
的方式断言行末尾的位置https://regex101.com/r/vuED26/1
经过进一步的调查,我发现在我寻找的子串之后,子串中永远不会有paren,所以我使用str.rfind()来分离我想要的
相关问题 更多 >
编程相关推荐