正则表达式找到精确匹配

2024-09-30 00:37:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下几种情况:

message: ON
message: "ON"
message: 'ON'
message: "TONC"
message: Los Angeles, ON
message: HOLDS ON FILE

我想匹配前三个场景中的单词,而不是其他场景中的单词

我试过正面/负面的表情,但没有效果。 例:

\bON\b(?=[\s{0,1}\"{0,1}\'{0,1}]$)

Tags: messageon场景情况单词表情filebon
3条回答

我建议咀嚼字符串以消除您不想要的内容,而不是尝试直接匹配。在这里,我只是删除非字母字符并与期望的结果进行比较:

#!/usr/bin/env python3
import re

tests = ['message: ON',
'message: "ON"',
'message: \'ON\'',
'message: "TONC"',
'message: Los Angeles, ON',
'message: HOLDS ON FILE']

for test in tests:
  test = re.sub(r'\W+', '', test)
  print(test)
  print(test == "messageON")

为什么不呢

message: (['"])?ON(?(1)\1)

a demo on regex101.com

你可以用

r'''(?<=:\s)(["']?)\bON\b\1'''

regex demo。如有必要,在模式末尾添加$,使其与字符串末尾匹配

详细信息

  • (?<=:\s)-一个正查找,它与前面紧跟着:和空白字符的位置相匹配
  • (["']?)-group1:可选的"'字符
  • \bON\b-整个单词{}
  • \1-对组1值的反向引用,可以是"'

注意:如果在:ON字之间可以有不同数量的空格,您可以使用PyPi regex moduler'''(?<=:\s*)(["']?)\bON\b\1'''模式

相关问题 更多 >

    热门问题