我需要解析以下字符串并获取定义的\$
标记内的任何值
例如,字符串
The following math equation: \$f(x) = x^2\$ is the same as \$g(x) = x^(4/2) \$
我想解析\$
标签之间的任何内容,以便结果包含两个方程式
'f(x) = x^2'
'g(x) = x^(4/2) '
我试过类似re.compile(r'\\\$(.)*\\$')
的东西,但它没有用。
答案 0 :(得分:1)
你几乎得到它,只是错过了一个反斜杠和一个问号(所以它一找到第二个\$
就停止并且不匹配可能的最长字符串):r'\\\$(.*?)\\\$'
>>> pattern = r'\\\$(.*?)\\\$'
>>> data = "The following math equation: \$f(x) = x^2\$ is the same as \$g(x) = x^(4/2) \$"
>>> re.findall(pattern, data)
['f(x) = x^2', 'g(x) = x^(4/2) ']
答案 1 :(得分:1)
正则表达式适合:
/\\\$.{0,}\\\$/g
/
- 开始
\\\$
- 转义:\ $
.
- 之间的任何字符
{0,}
- 至少0个字符(实际上是任意数量的字符)
\\\$
- 转义:\ $
/
- 结束
g
- 全局搜索
答案 2 :(得分:0)
这有效:
import re
regex = r'\\\$(.*)\\\$'
r = re.compile(regex)
print r.match("\$f(x) = x^2\$").group(1)
print r.match("\$g(x) = x^(4/2) \$").group(1)