我想检查字符串是否包含标点符号,这样一个连续的感叹号序列,问题&都。 通过连续,它意味着超过2次。就像下面一样,
#If sentence contains !!!
exc = re.compile(r"(.)\!{2}")
word["cont_exclamation"] = if exc.search(sent[i]) else not(found)
#If sentence contains ???
reg = re.compile(r"(.)\?{2}")
word["cont_question"] = if reg.search(sent[i]) else not(found)
但是现在我想找到感叹号和问号,例如,你好!或者嘿!!或者伙计!?!
另外,如果我想要怎么办?而且!两者都超过2个。
我不正确地知道正则表达式,所以任何帮助都会很棒。
答案 0 :(得分:3)
使用正则表达式'[?!] {3,}'表示匹配?要么 !字符3次或更多次(如果连续=超过两次)。在字符类中不需要引用。
根据需要向char类添加更多标点字符
答案 1 :(得分:2)
regex = re.compile(r"(.)(\?|\!){2}")
编辑:在谷歌中输入“正则表达式教程”会提供比您可能需要的更多信息。 This tutorial在简洁和完整之间看起来特别平衡。
特别是(i.m.o.)通常没有提及的有用技巧:
使用+?
和*?
从贪婪切换到懒惰匹配。即匹配尽可能少的字符而不是尽可能多的字符。示例文字:#ab# #de#
- > #.*?#
仅匹配#ab#
(不是#ab# #de#
)
括号默认情况下会创建一个捕获组。如果您不想这样,可以使用(?:
... )
。
最重要的是,使用人类可读的解释对每个正则表达式进行评论。未来 - 你会感激不尽。 : - )
答案 2 :(得分:2)
尝试re.compile(r"(.)[\?\!]{2}")