我需要转换用户输入的字符串。该用例非常简单:当字符串中有分号时,字符串被拆分为多行。在
当一行中有两个分号时,它们被转换成一个分号。在
理论上,没什么大问题。我使用Python,但是我相信其他语言的人会发现正则表达式很容易做到这一点。在import re
def get_lines(text):
"""Return a list of lines (list of str)."""
command_stacking = ";"
delimiter = re.escape(command_stacking)
re_del = re.compile("(?
chunks = re_del.split(text)
# Clean the double delimiters
for i, chunk in enumerate(chunks):
chunks[i] = chunk.replace(2 * command_stacking, command_stacking)
return chunks
这似乎奏效了:
^{pr2}$
但是当有三个或四个分号时,它的行为并不像预期的那样。在
正则表达式会忽略多个分号(这是它们应该忽略的),但是当将;;替换为;时,;;;将被{}替换,;;;;将被{}替换,依此类推。如果2被1取代,3被2取代,4被3取代。。。这是我可以向我的用户解释的。在
最好的解决办法是什么?在
谢谢你的帮助