正则表达式匹配特殊标签之间的一切

时间:2016-06-19 21:42:34

标签: python regex

我需要解析以下字符串并获取定义的\$标记内的任何值

例如,字符串

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'\\\$(.)*\\$')的东西,但它没有用。

3 个答案:

答案 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)