import re
#Examples:
input_text = "Recien el 2021-10-12 despues de 3 dias 2021-10-12" #NOT PASS
input_text = "Recien el 2021-10-12 hsah555sahsdhj. Ya despues de 3 dias hjsdfhjdsfhjdsf 2021-10-12" #NOT PASS
input_text = "Recien el 2021-10-12 hsah555sahsdhj; despues de 3 dias hjsdfhjdsfhjdsf 2021-10-12" #NOT PASS
input_text = "Recien el 2021-10-12 hsah555sahsdhj despues de 3 dias hjsdfhjdsfhjdsf.\n 2021-10-12" #NOT PASS
input_text = "Recien el 2021-10-12 hsah555sahsdhj; mmm... creo que ya despues de 3 dias hjsdfhjdsfhjdsf.\n 2021-10-12" #PASS
input_text = "Recien el 2021-10-12 hsah555sahsdhj. \n\n\n mmm... creo que ya despues de 3 dias hjsdfhjdsfhjdsf.\n 2021-10-12" #PASS
some_text = r"[\s|]*" # <--- I NEED MODIFY THIS PATTERN
date_format = r"\d*-\d{2}-\d{2}"
check_00 = re.search(date_format + some_text + r"(?:(?:pasados|pasado|despues del|despues de el|despues de|despues|tras) (\d+) (?:días|día|dias|dia)|(\d+) (?:días|día|dias|dia) (?:pasados|pasado|despues del|despues de el|despues de|despues|tras))", input_text, re.IGNORECASE)
check_01 = re.search(r"(?:(?:pasados|pasado|despues del|despues de el|despues de|despues|tras) (\d+) (?:días|día|dias|dia)|(\d+) (?:días|día|dias|dia) (?:pasados|pasado|despues del|despues de el|despues de|despues|tras))" + some_text + date_format, input_text, re.IGNORECASE)
if not check_00 and not check_01: print("1")
else: print("0")
我需要在变量some_text
中设置一个模式,用于标识任何字母数字子字符串(其可能包含所包括的符号,例如:
、$
、#
、&
、?
、¿
、!
、¡
、|
、°
、,
、.
,(
、)
、]
、[
、}
、{
),并且可以包含大写和小写字符,但是不应该出现(甚至一次也不应该出现)的符号只有;
和.\n
或.[\s|]*\n*
在本例中,我需要确定哪些情况不满足代码中的if not
条件。
如果算法中的所有内容都正常工作,您应该得到的输出如下所示:
0 #for example 1
0 #for example 2
0 #for example 3
0 #for example 4
1 #for example 5
1 #for example 6
在我想放入some_text
变量的同一模式中,是否可以用我不想出现在该模式的标识区域中的符号(在本例中为;
和.[\s|]*\n*
)来表示一个列表?
1条答案
按热度按时间nwnhqdif1#
但唯一不应该出现的符号,甚至一次都不应该出现,是;和.\n或.[\s| ]*\n *
如果不允许使用
;
,可以简单地使用[^;]
。关于另外两种"模式":
[\s|]
模式做出了错误的假设:字符类中的竖线符号将被解释为 * literally *。看起来你想用它来表明\s
是可选的,但是星号已经确保了这一点。必须对点进行转义。所以\.\s*?\n
。但是要 * 不 * 允许它,你可以将它放在一个负的前瞻中:(?!\.\s*?\n)
.这导致: