我正在使用python' re'我正在寻找匹配import requests
webAddress = "https://projects.fivethirtyeight.com/2018-nba-predictions/"
r = requests.get(webAddress)
print(repr(r.text))
但跳过[some text]
的模式。例如,如果输入是这样的:
[[another text]]
然后输出如下:
'[aaa]bb[[cd]]'
我已经尝试了bb[[cd]]
和r'(\[){1}(.*?)(\]){1}'
,但没有一个能够正常使用。
有什么想法吗?
答案 0 :(得分:0)
您可以使用Positive Lookbehind (?<=(\[aaa\]))
import re
pattern=r'(?<=(\[aaa\])).+'
text='[aaa]bb[[cd]]'
match=re.search(pattern,text)
print(match.group())
输出:
bb[[cd]]
说明:
\[ matches the character [ literally (case sensitive)
aaa matches the characters aaa literally (case sensitive)
\] matches the character ] literally (case sensitive)
1st Capturing Group (\[aaa\])
(?<=foo) Lookbehind Asserts that what immediately precedes the current position in the string is foo
P.S:如果同一行中有多个匹配,则使用finditer而不是re.search
答案 1 :(得分:0)
你需要两件事:
[^\]\[]
(?<!...)
(零宽度断言,如果子模式从当前位置失败,则向后检查)和负向前瞻(?!...)
(零宽度断言,如果子模式从当前位置失败,则向前检查)。结果:
r'(?<!\[)\[([^\]\[]*)\](?!\])'
请注意,零宽度断言意味着不会消耗子模式中描述的字符。换句话说,[
之前的字符
如果您将此模式与]
一起使用,则re.sub
未被替换。