如何使用正则表达式来识别不同行上大括号之间的错误?
How can I use a regex expression to identify the falses between braces on different lines?
我正在尝试使用 Python re.sub 模块将下面示例中的任何 false 实例替换为“false, \n”
local Mission = {
start_done = false
game_over = false
} --End Mission
我尝试了以下操作,但没有成功替换。这个想法是我以锚字符串开始和结束,跳过任何不是“false”的东西,当我得到匹配时 return “false + ','”。如有任何帮助,我们将不胜感激!
re.sub(r'(Mission = {)(.+?)(false)(.+?)(} --End Mission)', r'' + ',' + '\n')
您可以使用
re.sub(r'Mission = {.*?} --End Mission', lambda x: x.group().replace('false', 'false, \n'), text, flags=re.S)
参见regex demo。
备注:
Mission = {.*?} --End Mission
正则表达式匹配 Mission = {
,然后是任意零个或多个字符,然后是 } --End Mission
- 然后
false
在匹配的文本中被替换为 false, \n
。
import re
text = 'local Mission = {\n start_done = false\n game_over = false\n\n} --End Mission'
rx = r'Mission = {.*?} --End Mission'
print(re.sub(rx, lambda x: x.group().replace('false', 'false, \n'), text, flags=re.S))
另一个没有正则表达式的选项:
your_string = 'local Mission = {\n start_done = false\n game_over = false\n\n} --End Mission'
print(your_string.replace(' = false\n', ' = false,\n'))
输出:
local Mission = {
start_done = false,
game_over = false,
} --End Mission
前提是每个以 =
和 \n
开头的“假”字符串必须被替换,然后这里是一个正则表达式:
re.sub(r'= (false)\n', r'= ,\n', text)
注意:您在正则表达式中引入了 5 个组,因此您应该使用 </code> 而不是 <code>
来表示“false”,组从 1 开始,请参阅 doc段落 \number
我正在尝试使用 Python re.sub 模块将下面示例中的任何 false 实例替换为“false, \n”
local Mission = {
start_done = false
game_over = false
} --End Mission
我尝试了以下操作,但没有成功替换。这个想法是我以锚字符串开始和结束,跳过任何不是“false”的东西,当我得到匹配时 return “false + ','”。如有任何帮助,我们将不胜感激!
re.sub(r'(Mission = {)(.+?)(false)(.+?)(} --End Mission)', r'' + ',' + '\n')
您可以使用
re.sub(r'Mission = {.*?} --End Mission', lambda x: x.group().replace('false', 'false, \n'), text, flags=re.S)
参见regex demo。
备注:
Mission = {.*?} --End Mission
正则表达式匹配Mission = {
,然后是任意零个或多个字符,然后是} --End Mission
- 然后
false
在匹配的文本中被替换为false, \n
。
import re
text = 'local Mission = {\n start_done = false\n game_over = false\n\n} --End Mission'
rx = r'Mission = {.*?} --End Mission'
print(re.sub(rx, lambda x: x.group().replace('false', 'false, \n'), text, flags=re.S))
另一个没有正则表达式的选项:
your_string = 'local Mission = {\n start_done = false\n game_over = false\n\n} --End Mission'
print(your_string.replace(' = false\n', ' = false,\n'))
输出:
local Mission = {
start_done = false,
game_over = false,
} --End Mission
前提是每个以 =
和 \n
开头的“假”字符串必须被替换,然后这里是一个正则表达式:
re.sub(r'= (false)\n', r'= ,\n', text)
注意:您在正则表达式中引入了 5 个组,因此您应该使用 </code> 而不是 <code>
来表示“false”,组从 1 开始,请参阅 doc段落 \number