如何使用 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.DOTALL
或 re.S
使 .
匹配换行符也是:
reg = re.compile(".*<contentID>1.*", re.DOTALL)
m = reg.fullmatch(s)
print(m)
另外,参见 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
。
我的代码是这样的:
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.DOTALL
或 re.S
使 .
匹配换行符也是:
reg = re.compile(".*<contentID>1.*", re.DOTALL)
m = reg.fullmatch(s)
print(m)
另外,参见 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
。