匹配所有非数字后跟字母的内容

时间:2010-07-27 21:53:02

标签: regex regexkitlite

道歉,如果这在其他地方得到解答 - 我做了一些搜索,但找不到答案。

假设我有一个包含大量内容的文本文件。在该内容中是一个职业代码,它始终采用数字后跟大写字母的格式。

如何从文件中仅提取occ代码?用简单的英语,我想删除文件中与number-capital_letter模式不匹配的所有内容。

3 个答案:

答案 0 :(得分:5)

您可以使用/(\d+[A-Z])/

进行匹配

答案 1 :(得分:0)

编写一个逐行扫描或逐字扫描的脚本,具体取决于occ代码在文件中的显示方式,并使用REGEX检查匹配,然后将它们转换为另一个文件是一个简单的解决方案。

您可以在整个文档上使用单个正则表达式匹配并迭代结果,但这可能会出现问题,具体取决于文件的大小。

答案 2 :(得分:0)

这是使用sed删除除所需代码之外的所有内容的粗略尝试。 (注意,我将“数字”解释为一个或多个数字的字符串,没有小数点或前导减号。)

sed -e 's/\([A-Z]\)[0-9]*/\1/g' -e 's/[0-9]*[^0-9A-Z]*//g' -e 's/[0-9]*$//' -e '/^$/d' < filename

第一个命令在大写字母不是数字(因此可能是另一个代码的开头)后删除任何内容,第二个命令删除除大写字母以外的任何数字,第三个删除尾随数字和第四个删除空行。

我已经进行了一些测试,这看起来效果很好。如果有人能找到失败的情况,我会很高兴地修改它。