【问题标题】:RegEx: how to remove a word in greater than sign and less than sings? [duplicate]RegEx:如何删除大于号和小于号中的单词? [复制]
【发布时间】:2020-04-15 17:07:11
【问题描述】:

我有一句话:

'hi how <unk> are you'

我需要从中删除&lt;unk&gt;

这是我的代码:

re.sub(r'\b{}\b'.format('<unk>'), '', 'agent transcript str <unk> with chunks for key phrases')

为什么我的 RegEx 不适用于 <...>?

【问题讨论】:

  • &lt;&gt; 之间的空格没有单词边界

标签: python regex string


【解决方案1】:

&lt;&gt; 之间没有空格,你可以试试

re.sub(r'(\s*)<unk>(\s*)', r'\1\2', your_string)

或者 - 如果你不想要两个空格,你可以试试

re.sub(r'(\s*)<unk>\s+', r'\1', your_string)


请记住,\b 是非单词字符 ([^\w+]+) 和单词字符 (\w+[A-Za-z0-9_]) 之间的单词边界。在您的原始字符串中,您试图找到空格和 &lt;&gt; 之间的边界,其中 \b 不匹配。
a demo on regex101.com

【讨论】:

  • r'(\s*)&lt;unk&gt;(\s*)' 是一个错误的解决方案。右边:r'(?&lt;!\w){}(?!\w)'.format(re.escape('&lt;unk&gt;'))r'(?&lt;!\S){}(?!\S)'.format(re.escape('&lt;unk&gt;'))
  • 我可以知道re.sub(r'',''','hi您是如何)和regex吗?
  • @illuminates 您想要搜索整个单词,因此,您需要明确的单词边界。或空白边界。或者自定义边界,只是你必须想出一个“词”的定义。
猜你喜欢
  • 1970-01-01
  • 2022-12-12
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 2022-12-17
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多