如何通过忽略字符串前面的特殊字符从文本中提取正确的字符串?
Posted
技术标签:
【中文标题】如何通过忽略字符串前面的特殊字符从文本中提取正确的字符串?【英文标题】:How to extract proper string from text by ignoring the special character preceding the string? 【发布时间】:2020-12-26 21:07:17 【问题描述】:我有几个文本,我必须从中提取字符串,然后是特定的单词,但我遇到了一个问题,特殊字符(可以是任何特殊字符)前面是字符串。请更正我的正则表达式以获取正确结果:
这是一些粘贴的文本示例
样品一:"customer no �123456"
样品2:"customer id %9999999"
样品3:"customer id 12121212"
示例 4:"customer id @134563"
我想要上述文本示例的以下输出:
样本 1 输出:"123456"
示例 2 输出:"9999999"
样本 3 输出:"12121212"
示例 4 输出:"134563"
我使用的正则表达式输出错误:r'\bcustomer\s(?:id|no)\s+(\w+)'
请帮我纠正我的正则表达式以获得正确的输出。
【问题讨论】:
【参考方案1】:您可以使用\W
匹配任何非单词字符(主要是字母、数字或下划线以外的任何字符):
r'\bcustomer\s(?:id|no)\W+(\w+)'
见regex demo
详情
\b
- 单词边界
customer
- 一个字符串
\s
- 一个空格(在\s
之后添加+
以匹配任何一个或多个空格字符)
(?:id|no)
- id
或 no
子字符串
\W+
- 除了单词字符(字母/数字/下划线)之外的一个或多个字符
(\w+)
- 第 1 组:一个或多个单词字符。
【讨论】:
以上是关于如何通过忽略字符串前面的特殊字符从文本中提取正确的字符串?的主要内容,如果未能解决你的问题,请参考以下文章
除了文本,如何从文本中删除数字、标点、空格和特殊字符? [复制]