说我有一个字符串Python的转换字符串使用正则表达式乳胶
string = "{1/100}"
我想用正则表达式在Python把它转换成
new_string = "\frac{1}{100}"
我想我会需要用到的东西这样
new_string = re.sub(r'{.+/.+}', r'', string)
但是我卡上什么,我会整理保存字符分数,在本例中为1和100.
说我有一个字符串Python的转换字符串使用正则表达式乳胶
string = "{1/100}"
我想用正则表达式在Python把它转换成
new_string = "\frac{1}{100}"
我想我会需要用到的东西这样
new_string = re.sub(r'{.+/.+}', r'', string)
但是我卡上什么,我会整理保存字符分数,在本例中为1和100.
您可以使用()
来捕获数字。然后使用\1
和\2
指他们:
new_string = re.sub(r'{(.+)/(.+)}', r'\\frac{\1}{\2}', string)
# \frac{1}{100}
注:不要忘了转义反斜线\\
。
使用parens捕获数字,然后使用\1
和\2
在替换文本中引用它们。例如:
>>> print re.sub(r'{(.+)/(.+)}', r'\\frac{\1}{\2}', "{1/100}")
\frac{1}{100}
大括号内的任何内容都是数字/
的数字。所以在正则表达式的地方编号([0-9]
)而不是.
(点)。
>>> import re
>>> string = "{1/100}"
>>> new = re.sub(r'{([0-9]+)/([0-9]+)}', r'\\frac{\1}{\2}', string)
>>> print new
\frac{1}{100}
使用re.match
。它更灵活:
>>> m = re.match(r'{(.+)/(.+)}', string)
>>> m.groups()
('1', '100')
>>> new_string = "\\frac{%s}{%s}"%m.groups()
>>> print new_string
\frac{1}{100}
没有理由将参数限制为数字。 '\ frac'不关心这两个参数是什么;它只是排版它们,在[vincumulm](http://en.wikipedia.org/wiki/Vinculum_(symbol))之上和之下。 – chepner