这是我拥有的字符串(忽略空白)
a = u'(%o3) (9*t*(7*t*(5*t*(3*t^2-1)/2-2*t)/3-3*(3*t^2-1)2)/4-4\r\n*(5*t*(3*t^2-1)2 \r\n-2*t)\r\n/3)\r\n /5\r\n(%i4) '
我该怎么把它分解成这样:
b = ['(%o3','(9*t*(7*t*(5*t*(3*t^2-1)/2-2*t)/3-3*(3*t^2-1)2)/4-4\r\n*(5*t*(3*t^2-1)2\r\n-2*t)\r\n/3)\r\n /5','(%i4)' ]
这有点像检查模式(%o\d+)和(%i\d+)并在它们出现的地方进行拆分,但不丢失模式本身,a.split(blah)通常 松散的'废话'。在我的语境中,“废话”是有意义的,我不能放松它。你知道吗
可能有两个以上的模式出现,所以我需要分开的模式 (%o\d+)和(%i\d+)以及它们之间/之后的任何文本。 最好的办法是什么? 我不确定regexes是否可以做到这一点,或者是现有的修改文本.拆分如果split参数存在的话
说明
在python中,您可以使用
this link to regex
(\([%][a-z][0-9]{1,}\))(.*?)(\([%][a-z][0-9]{1,}\))$
当你用绳子
产生以下分组匹配
摘要
(
打开第一个组匹配\(
需要一个开放的圆括号[%]
要求有百分号[a-z]
需要任何小写字母字符[0-9]{1,}
需要任意序列中任意数量的数字\)
需要一个圆括号)
关闭*first*组(
打开第二组比赛.*?
在打开和关闭子字符串之间匹配整个中间子字符串)
关闭*第二个*组匹配(
打开第三组比赛\(
需要一个开放的圆括号[%]
要求有百分号[a-z]
需要任何小写字母字符[0-9]{1,}
需要任意序列中任意数量的数字\)
需要一个圆括号)
关闭第三组$
确保字符串有结尾。这迫使第三组在字符串的末尾,而不是在中间的某个地方徘徊免责声明
在源代码问题中,第三组where之前的
\r\n
子字符串被删除,结果文本中包含了一些额外的空格,而源代码中则包含where。我假设那些是偶然引入或掉落的。你知道吗如果在match参数周围使用括号重新拆分同时返回match参数。你知道吗
更多信息here。你知道吗
相关问题 更多 >
编程相关推荐