Python 正则表达式使用换行符搜索两个关键字之间的所有子字符串
假设我有一个python字符串Python 正则表达式使用换行符搜索两个关键字之间的所有子字符串,python,regex,Python,Regex,假设我有一个python字符串“\\[this\\]是\\[some\n text\\]. s = "\\[this\\] is \\[some\n text\\]." 我想要一个正则表达式,它将返回子字符串“this”和“some text”。 我试过了 re.search(r'\\[(.*)\\]',s) 但是它不起作用(返回None)您在正则表达式中遗漏了一个反斜杠,并对点使用re.DOTALL来匹配换行符 import re s = "\\[this\
“\\[this\\]是\\[some\n text\\].
s = "\\[this\\] is \\[some\n text\\]."
我想要一个正则表达式,它将返回子字符串“this”和“some text”。
我试过了
re.search(r'\\[(.*)\\]',s)
但是它不起作用(返回None)您在正则表达式中遗漏了一个反斜杠,并对点
使用re.DOTALL
来匹配换行符
import re
s = "\\[this\\] is \\[some\n text\\]."
r = re.findall(r'\\\[(.*?)\\\]', s, flags=re.DOTALL)
print(r) # ['this', 'some\n text']
我会照字面意思理解你贴的字符串,但是你可以很容易地编辑以匹配另一个模式 我认为这可以完成以下工作:
'\\\\\[(.*?)\\\\\]'
解释:
转义字符,因此使用\可以转义反斜杠。由于必须找到2个反斜杠,因此还需要另外2个反斜杠作为转义字符(总共4个)\
- 出于与上述相同的原因,您还需要一个
来转义\
字符[
设置捕获组(
匹配任何字符
尽可能多的次数,但后面跟着一个*
表示尽可能少的次数?
关闭捕获组)
- 其他5个
后面跟\
的工作原理如前所述(转义反斜杠/括号序列)]
希望我能帮忙;) 您可以对捕获组使用否定字符类
([^][]*)
,并在组外关闭\
之前匹配\
import re
s = "\\[this\\] is \\[some\n text\\]."
print(re.findall(r"\[([^][]*)\\]", s))
输出
['this', 'some\n text']
快速的我有
x=re.findall(r'(?s)\[([^\]]*)\\\]',s)
和链接,这些链接将匹配r“\\[这个\\]是\\[一些\n文本\\].“
不是”\[这个\\]是\\[一些\n文本\\].“
)这些是不同的字符串,而不是r
preffix@azro是的,但是OP没有明确地问这个问题(我说我实际上使用了文本字符串)。如果您需要匹配以\\[
开始,以\\]
结束,您可以使用。正则表达式如下所示:\B\[(.*)]\B