我需要将以下表达式解析为单独的标记:
"a=b+c" -> a b + c
"a=5+c" -> a 5 + c
"a=c*50" -> a c * 50
"a=50%50" -> a 50 % 50
"a=c-x[20]" -> a c - x[20]
"a=x[3]+50" -> a x[3] + 50
"a=b--c" -> a b - -c
我使用了this regex help,但是我只能将正则表达式应用于一个示例,而不是全部。例如,以下代码仅适用于“ a = b + c”,“ a = c-50”,但如果我将它们交换为“ a = c-50,“ a = b + c”,则无效:
#!/usr/bin/python
# URL that generated this code:
# http://txt2re.com/index-python.php3?s=%22a=b%2bc%22,%20%22a=c-50%22&-32&-34&25&-35&-33&36&27&5
import re
txt='"a=b+c", "a=c-50"'
re1='.*?' # Non-greedy match on filler
re2='(a)' # Any Single Character 1
re3='.*?' # Non-greedy match on filler
re4='(b)' # Any Single Character 2
re5='(.)' # Any Single Character 3
re6='(c)' # Any Single Character 4
re7='.*?' # Non-greedy match on filler
re8='(a)' # Any Single Character 5
re9='.*?' # Non-greedy match on filler
re10='.' # Uninteresting: c
re11='.*?' # Non-greedy match on filler
re12='(.)' # Any Single Character 6
re13='(.)' # Any Single Character 7
re14='(\\d+)' # Integer Number 1
rg = re.compile(re1+re2+re3+re4+re5+re6+re7+re8+re9+re10+re11+re12+re13+re14,re.IGNORECASE|re.DOTALL)
m = rg.search(txt)
if m:
c1=m.group(1)
c2=m.group(2)
c3=m.group(3)
c4=m.group(4)
c5=m.group(5)
c6=m.group(6)
c7=m.group(7)
int1=m.group(8)
print("("+c1+")"+"("+c2+")"+"("+c3+")"+"("+c4+")"+"("+c5+")"+"("+c6+")"+"("+c7+")"+"("+int1+")"+"\n")
答案 0 :(得分:0)
尝试使用re.split()
它将根据运算符拆分您的方程式。
例如:
text = 'a=x[3]+50'
pattern = r'([\=\+\-\%\*])'
result = re.split(pattern, text)
输出:
['a', '=', 'x[3]', '+', '50']