我一直在寻找一种方法来隔离正则表达式中的特殊字符,但我似乎只找到了与我所寻找的完全相反的东西。所以基本上我想是这样的:
import re
str = "I only want characters from the pattern below to appear in a list ()[]' including quotations"
pattern = """(){}[]"'-"""
result = re.findall(pattern, str)
我对此的期望是:
print(result)
#["(", ")", "[", "]", "'"]
4条答案
按热度按时间iswrvxsc1#
为什么不需要正则表达式就可以完成这个任务呢?
stszievb2#
如果是出于学习的目的(regex在这里并不是最好的方法),那么你可以用途:
包围
[
和]
中的字符使其成为正则表达式字符类,re.escape
将转义任何具有特殊正则表达式含义的字符,以避免破坏正则表达式字符串(例如:]
提前终止字符或-
在某个地方导致它像一个字符范围)。trnvg8h33#
集合中的几个字符在正则表达式中具有特殊含义;要从字面上匹配它们,您需要对它们进行反斜杠转义。
或者,您可以使用字符类:
还要注意使用了“原始字符串”
r'...'
来避免Python解释反斜杠。nr9pn0ug4#
这个正则表达式解决了我的问题: