python正则表达式在不同条件下的匹配结束
目前,我使用两个正则表达式从字符串中获取数据,如下所示:python正则表达式在不同条件下的匹配结束,python,regex,Python,Regex,目前,我使用两个正则表达式从字符串中获取数据,如下所示: match = re.match('(\d+(\.\d+)*)(.*)[Xx](.*)(\d+(\.\d+)*)|', '12 x 13.5|1 - 3 acres') 我要的号码是12和13.5 在另一种情况下,字符串没有|,仅在数字后为空。我用这个来匹配: match = re.match('(\d+(\.\d+)*)(.*)[Xx](.*)(\d+(\.\d+)*)$', '12 x 13.5') 我想要的是使用一个正则表达式来
match = re.match('(\d+(\.\d+)*)(.*)[Xx](.*)(\d+(\.\d+)*)|', '12 x 13.5|1 - 3 acres')
我要的号码是12和13.5
在另一种情况下,字符串没有|,仅在数字后为空。我用这个来匹配:
match = re.match('(\d+(\.\d+)*)(.*)[Xx](.*)(\d+(\.\d+)*)$', '12 x 13.5')
我想要的是使用一个正则表达式来匹配这两个条件,我应该怎么做
更新:
我通过以下方式获得数字:
match.group(1)
match.group(4)+match.group(5)
我不明白这个问题。如何合并这些行?还有比什么更好的方法?代码应该做什么?顺便说一下,我很确定这两个正则表达式都是错误的。请描述您试图匹配的内容。为什么不简单地删除
|
/$
?因此基本上您正在寻找一种匹配|
字符或字符串结尾的方法?这将是(?:$\\\\\)
。此外,\d+(\.\d+*
与1.2.3.4.5
匹配。你不想匹配任意数量的小数;您希望匹配0或1。使用\d(\.\d+)
。