我需要一个代码来评估几个规则以突出显示某些文本,而我在尝试理解OR和AND如何工作时遇到了问题。
规则:
if not text.endswith((".", "!", "?", "//", ":"))
if not bool(re.search('[0-5][0-9]:[0-5][0-9]', text)
if not text[0].isupper()
if not text[0] == "["
if not any(i in text[0] for i in ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]))
这是我目前的代码:
elif (not text.endswith((".", "!", "?", "//", ":"))
and not bool(re.search('[0-5][0-9]:[0-5][0-9]', text))
or not text[0].isupper()
or not text[0] == "["
or not any(i in text[0] for i in ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"])):
# highlight text
第一个问题显然是我没有得到何时使用OR以及何时使用AND(尽管检查文档)。
作为奖金问题:关于我的正则表达规则。它不应该突出显示文本,如果它只是“33:44”,但它应该如果一行说“我们今天44:44”没有最后一个点。我不知道该怎么做。
另外,如果代码可以简化,我会很感激。
答案 0 :(得分:0)
我不确定我是否正确理解了您的问题。但是如果你
如果是这种情况,您可以尝试使用简单的正则表达式
import re
re.search(r"""(^[A-Z] #starting letter to be a upper case alphabet
.*? #anything in between
[0-5][0-9]:[0-5][0-9] #digits of the given format
.*? # anything again
[^.!?//:]$ # none of these characters at the end
)""", text, re.X)
您可以根据自己的要求修改模式。