如何使用 regexp 通过使用 Python3 在括号中有空格

How to use regexp has whitespace in brackets by using Python3

我的代码是这样的:

import re

s = """
    <contentID>1"""
reg = re.compile("(.|\n)+<contentID>1.*")
m = reg.fullmatch(s)
print(m)
reg = re.compile("[.\n]+<contentID>1.*")
m = reg.fullmatch(s)
print(m)

似乎正则表达式 [.\n] 不起作用,但 (.|\n) 可以。为什么?以及在这种情况下使用括号时如何编写RegExp?

而不是匹配换行符或文字点字符的 [.\n],使用 .re.DOTALLre.S 使 . 匹配换行符也是:

reg = re.compile(".*<contentID>1.*", re.DOTALL)
m = reg.fullmatch(s)
print(m)

Python demo

另外,参见 Python re reference

[]
       Used to indicate a set of characters. In a set:
...

  • Special characters lose their special meaning inside sets. For example, [(+*)] will match any of the literal characters (, +, *, or ).

  • 如果你不使用fullmatch而是使用search,你可以只使用reg = re.compile("<contentID>1")if "<contentID>1" in s