如何通过忽略字符串前面的特殊字符从文本中提取正确的字符串?

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) - idno 子字符串 \W+ - 除了单词字符(字母/数字/下划线)之外的一个或多个字符 (\w+) - 第 1 组:一个或多个单词字符。

【讨论】:

以上是关于如何通过忽略字符串前面的特殊字符从文本中提取正确的字符串?的主要内容,如果未能解决你的问题,请参考以下文章

正则表达基础学习

如何在R中提取带有特殊字符的模式之间的字符串[重复]

除了文本,如何从文本中删除数字、标点、空格和特殊字符? [复制]

C# windows应用程序中,如何从文本框TextBox中提取数字?

如何用函数在excel中提取特定字符后面的字符

如何从字符串中提取文本并将其保存为两列并在第三列的末尾添加字符