在python中使用正则表达式捕获表情符号

在python中使用正则表达式捕获表情符号,第1张

在python中使用正则表达式捕获表情符号

我认为它终于“点击了”您所要询问的内容。看一下下面的内容:

import resmiley_pattern = '^(:(|:))+$' # matches only the smileys ":)" and ":("def test_match(s):    print 'Value: %s; Result: %s' % (        s,        'Matches!' if re.match(smiley_pattern, s) else 'Doesn't match.'    )should_match = [    ':)',   # Single smile    ':(',   # Single frown    ':):)', # Two smiles    ':(:(', # Two frowns    ':):(', # Mix of a smile and a frown]should_not_match = [    '',         # Empty string    ':(foo',    # Extraneous characters appended    'foo:(',    # Extraneous characters prepended    ':( :(',    # Space between frowns    ':( (',     # Extraneous characters and space appended    ':(('       # Extraneous duplicate of final character appended]print('The following should all match:')for x in should_match: test_match(x);print('')   # newline for output clarityprint('The following should all not match:')for x in should_not_match: test_match(x);

您原始代码的问题是您的正则表达式是错误的:

(:()
。让我们分解一下。

外部括号是“分组”。如果要进行字符串替换,它们就是您要引用的内容,并且可将它们一次应用于多个字符组的正则表达式运算符。因此,您实际上是在说:

  • (
    开始一个小组
    • :(
      …做正则表达式的东西…
  • ‘)’结束群组

:
不是正则表达式保留的字符,因此它只是一个冒号。的
是,它的意思是“下面的字符是文字,而不是一个正则表达式运算符”。这称为“转义序列”。正则表达式表示完全解析为英语

  • (
    开始一个小组
    • :
      冒号
    • (
      左括号字符
  • )
    结束小组

我使用的正则表达式稍微复杂一些,但还不错。让我们分解一下:

^(:(|:))+$

^
和分别
$
表示“行的开头”和“行的结尾”。现在我们有…

  • ^
    行首
    • (:(|:))+
      …做正则表达式的东西…
  • $
    行结束

…因此它仅匹配组成整行的内容,而不仅仅是在字符串中间出现。

我们知道这一点,

(
)
表示一个分组。
+
表示“其中的一个”。现在我们有:

  • ^
    行首
  • (
    发起一个小组
    • :(|:)
      …做正则表达式的东西…
  • )
    结束小组
  • +
    匹配一个或多个
  • $
    行结束

最后是

|
(管道)运算符。它的意思是“或”。因此,应用我们从上面了解的有关转义字符的知识,我们准备完成翻译:

  • ^
    行首
  • (
    发起一个小组
    • :
      冒号
    • (
      左括号字符
  • |
    要么
    • :
      冒号
    • )
      右括号字符
  • )
    结束小组
  • +
    匹配一个或多个
  • $
    行结束

我希望这有帮助。如果没有,请告诉我,我将很乐意通过答复来编辑我的答案。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5646079.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存