带OR函数的Python正则表达式

时间:2018-02-19 05:05:17

标签: python regex python-3.x

我想在一个正则表达式中从字符串1和字符串2中提取字符串“981”,“1922”,“1849”,“1819”。

 #string 1 
 :3:LKR5000->981:4:LKR1000->1922:5:LKR500->1849:6:LKR100->1819

 #string 2
 :1:LKR5000->981
 :2:LKR1000->1922
 :3:LKR500->1849:4:LKR100->1819

写的python代码:

   firstNote=re.findall(':\d:LKR\w+\-\>(.*?)\:',strtosearch2,re.DOTALL)

   1000s=re.findall('LKR1000->(.*?)\:',strtosearch2,re.DOTALL)
   500s=re.findall('LKR500->(.*?)\:',strtosearch2,re.DOTALL)
   100s=re.findall('LKR100->(.*?)\n',strtosearch2,re.DOTALL) 

任何人都可以帮我完成代码吗? 谢谢

2 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

(?<=->)\d+

<强> Click for Demo

See the code output here

<强>解释

  • (?<=->) - 找到紧靠->
  • 之前的位置的正面观察
  • \d+ - 匹配1个以上的数字

或者,使用此正则表达式:

(LKR\d+)->(\d+)

<强> Click for Demo

从此正则表达式中,对于每个匹配,您可以提取组1的内容并检查它是LKR1000LKR500LKR100并从组2中获取其对应的值匹配

答案 1 :(得分:0)

以下正则表达式应该说:r"LKR\d+->(\d+)"

re.findall(r"LKR\d+->(\d+)",s1)
#['981', '1922', '1849', '1819']
re.findall(r"LKR\d+->(\d+)",s2)
#['981', '1922', '1849', '1819']