regex python正则表达式只保留指定的特殊字符

4dc9hkyq  于 2023-06-30  发布在  Python
关注(0)|答案(4)|浏览(125)

我一直在寻找一种方法来隔离正则表达式中的特殊字符,但我似乎只找到了与我所寻找的完全相反的东西。所以基本上我想是这样的:

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)
#["(", ")", "[", "]", "'"]
iswrvxsc

iswrvxsc1#

为什么不需要正则表达式就可以完成这个任务呢?

>>> str = "I only want characters from the pattern below to appear in a list ()[]' including quotations"
>>> pattern = """(){}[]"'-"""
>>> [x for x in str if x in pattern]
['(', ')', '[', ']', "'"]
stszievb

stszievb2#

如果是出于学习的目的(regex在这里并不是最好的方法),那么你可以用途:

import re

text = "I only want characters from the pattern below to appear in a list ()[]' including quotations"
output = re.findall('[' + re.escape("""(){}[]"'-""") + ']', text) 
# ['(', ')', '[', ']', "'"]

包围[]中的字符使其成为正则表达式字符类,re.escape将转义任何具有特殊正则表达式含义的字符,以避免破坏正则表达式字符串(例如:]提前终止字符或-在某个地方导致它像一个字符范围)。

trnvg8h3

trnvg8h33#

集合中的几个字符在正则表达式中具有特殊含义;要从字面上匹配它们,您需要对它们进行反斜杠转义。

pattern = r"""\(\)\{\}\[]"'-"""

或者,您可以使用字符类:

pattern = """[]-[(){}"']"""

还要注意使用了“原始字符串”r'...'来避免Python解释反斜杠。

nr9pn0ug

nr9pn0ug4#

这个正则表达式解决了我的问题:

pattern = r"""[(){}\[\]"'\-]"""
  • 以提问者名义发布 *

相关问题