字符串由标点符号组成

时间:2013-12-11 14:02:57

标签: python regex punctuation

我想检查字符串是否包含标点符号,这样一个连续的感叹号序列,问题&都。 通过连续,它意味着超过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个。

我不正确地知道正则表达式,所以任何帮助都会很棒。

3 个答案:

答案 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}")